(function webpackUniversalModuleDefinition(root, factory) {
    if(typeof exports === 'object' && typeof module === 'object')
        module.exports = factory();
    else if(typeof define === 'function' && define.amd)
        define([], factory);
    else if(typeof exports === 'object')
        exports["Gitalk"] = factory();
    else
        root["Gitalk"] = factory();
})(this, function() {
    return /******/ (function(modules) { // webpackBootstrap
        /******/ 	// The module cache
        /******/ 	var installedModules = {};
        /******/
        /******/ 	// The require function
        /******/ 	function __webpack_require__(moduleId) {
            /******/
            /******/ 		// Check if module is in cache
            /******/ 		if(installedModules[moduleId]) {
                /******/ 			return installedModules[moduleId].exports;
                /******/ 		}
            /******/ 		// Create a new module (and put it into the cache)
            /******/ 		var module = installedModules[moduleId] = {
                /******/ 			i: moduleId,
                /******/ 			l: false,
                /******/ 			exports: {}
                /******/ 		};
            /******/
            /******/ 		// Execute the module function
            /******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
            /******/
            /******/ 		// Flag the module as loaded
            /******/ 		module.l = true;
            /******/
            /******/ 		// Return the exports of the module
            /******/ 		return module.exports;
            /******/ 	}
        /******/
        /******/
        /******/ 	// expose the modules object (__webpack_modules__)
        /******/ 	__webpack_require__.m = modules;
        /******/
        /******/ 	// expose the module cache
        /******/ 	__webpack_require__.c = installedModules;
        /******/
        /******/ 	// define getter function for harmony exports
        /******/ 	__webpack_require__.d = function(exports, name, getter) {
            /******/ 		if(!__webpack_require__.o(exports, name)) {
                /******/ 			Object.defineProperty(exports, name, {
                    /******/ 				configurable: false,
                    /******/ 				enumerable: true,
                    /******/ 				get: getter
                    /******/ 			});
                /******/ 		}
            /******/ 	};
        /******/
        /******/ 	// getDefaultExport function for compatibility with non-harmony modules
        /******/ 	__webpack_require__.n = function(module) {
            /******/ 		var getter = module && module.__esModule ?
                /******/ 			function getDefault() { return module['default']; } :
                /******/ 			function getModuleExports() { return module; };
            /******/ 		__webpack_require__.d(getter, 'a', getter);
            /******/ 		return getter;
            /******/ 	};
        /******/
        /******/ 	// Object.prototype.hasOwnProperty.call
        /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
        /******/
        /******/ 	// __webpack_public_path__
        /******/ 	__webpack_require__.p = "/dist";
        /******/
        /******/ 	// Load entry module and return exports
        /******/ 	return __webpack_require__(__webpack_require__.s = 78);
        /******/ })
    /************************************************************************/
    /******/ ([
        /* 0 */
        /***/ (function(module, exports) {

            var core = module.exports = {version: '2.4.0'};
            if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef

            /***/ }),
        /* 1 */
        /***/ (function(module, exports, __webpack_require__) {

            var store      = __webpack_require__(41)('wks')
                , uid        = __webpack_require__(24)
                , Symbol     = __webpack_require__(2).Symbol
                , USE_SYMBOL = typeof Symbol == 'function';

            var $exports = module.exports = function(name){
                return store[name] || (store[name] =
                        USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
            };

            $exports.store = store;

            /***/ }),
        /* 2 */
        /***/ (function(module, exports) {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
            var global = module.exports = typeof window != 'undefined' && window.Math == Math
                ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
            if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef

            /***/ }),
        /* 3 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            var bind = __webpack_require__(71);
            var isBuffer = __webpack_require__(159);

            /*global toString:true*/

// utils is a library of generic helper functions non-specific to axios

            var toString = Object.prototype.toString;

            /**
             * Determine if a value is an Array
             *
             * @param {Object} val The value to test
             * @returns {boolean} True if value is an Array, otherwise false
             */
            function isArray(val) {
                return toString.call(val) === '[object Array]';
            }

            /**
             * Determine if a value is an ArrayBuffer
             *
             * @param {Object} val The value to test
             * @returns {boolean} True if value is an ArrayBuffer, otherwise false
             */
            function isArrayBuffer(val) {
                return toString.call(val) === '[object ArrayBuffer]';
            }

            /**
             * Determine if a value is a FormData
             *
             * @param {Object} val The value to test
             * @returns {boolean} True if value is an FormData, otherwise false
             */
            function isFormData(val) {
                return (typeof FormData !== 'undefined') && (val instanceof FormData);
            }

            /**
             * Determine if a value is a view on an ArrayBuffer
             *
             * @param {Object} val The value to test
             * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
             */
            function isArrayBufferView(val) {
                var result;
                if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
                    result = ArrayBuffer.isView(val);
                } else {
                    result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);
                }
                return result;
            }

            /**
             * Determine if a value is a String
             *
             * @param {Object} val The value to test
             * @returns {boolean} True if value is a String, otherwise false
             */
            function isString(val) {
                return typeof val === 'string';
            }

            /**
             * Determine if a value is a Number
             *
             * @param {Object} val The value to test
             * @returns {boolean} True if value is a Number, otherwise false
             */
            function isNumber(val) {
                return typeof val === 'number';
            }

            /**
             * Determine if a value is undefined
             *
             * @param {Object} val The value to test
             * @returns {boolean} True if the value is undefined, otherwise false
             */
            function isUndefined(val) {
                return typeof val === 'undefined';
            }

            /**
             * Determine if a value is an Object
             *
             * @param {Object} val The value to test
             * @returns {boolean} True if value is an Object, otherwise false
             */
            function isObject(val) {
                return val !== null && typeof val === 'object';
            }

            /**
             * Determine if a value is a Date
             *
             * @param {Object} val The value to test
             * @returns {boolean} True if value is a Date, otherwise false
             */
            function isDate(val) {
                return toString.call(val) === '[object Date]';
            }

            /**
             * Determine if a value is a File
             *
             * @param {Object} val The value to test
             * @returns {boolean} True if value is a File, otherwise false
             */
            function isFile(val) {
                return toString.call(val) === '[object File]';
            }

            /**
             * Determine if a value is a Blob
             *
             * @param {Object} val The value to test
             * @returns {boolean} True if value is a Blob, otherwise false
             */
            function isBlob(val) {
                return toString.call(val) === '[object Blob]';
            }

            /**
             * Determine if a value is a Function
             *
             * @param {Object} val The value to test
             * @returns {boolean} True if value is a Function, otherwise false
             */
            function isFunction(val) {
                return toString.call(val) === '[object Function]';
            }

            /**
             * Determine if a value is a Stream
             *
             * @param {Object} val The value to test
             * @returns {boolean} True if value is a Stream, otherwise false
             */
            function isStream(val) {
                return isObject(val) && isFunction(val.pipe);
            }

            /**
             * Determine if a value is a URLSearchParams object
             *
             * @param {Object} val The value to test
             * @returns {boolean} True if value is a URLSearchParams object, otherwise false
             */
            function isURLSearchParams(val) {
                return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;
            }

            /**
             * Trim excess whitespace off the beginning and end of a string
             *
             * @param {String} str The String to trim
             * @returns {String} The String freed of excess whitespace
             */
            function trim(str) {
                return str.replace(/^\s*/, '').replace(/\s*$/, '');
            }

            /**
             * Determine if we're running in a standard browser environment
             *
             * This allows axios to run in a web worker, and react-native.
             * Both environments support XMLHttpRequest, but not fully standard globals.
             *
             * web workers:
             *  typeof window -> undefined
             *  typeof document -> undefined
             *
             * react-native:
             *  navigator.product -> 'ReactNative'
             */
            function isStandardBrowserEnv() {
                if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {
                    return false;
                }
                return (
                    typeof window !== 'undefined' &&
                    typeof document !== 'undefined'
                );
            }

            /**
             * Iterate over an Array or an Object invoking a function for each item.
             *
             * If `obj` is an Array callback will be called passing
             * the value, index, and complete array for each item.
             *
             * If 'obj' is an Object callback will be called passing
             * the value, key, and complete object for each property.
             *
             * @param {Object|Array} obj The object to iterate
             * @param {Function} fn The callback to invoke for each item
             */
            function forEach(obj, fn) {
                // Don't bother if no value provided
                if (obj === null || typeof obj === 'undefined') {
                    return;
                }

                // Force an array if not already something iterable
                if (typeof obj !== 'object' && !isArray(obj)) {
                    /*eslint no-param-reassign:0*/
                    obj = [obj];
                }

                if (isArray(obj)) {
                    // Iterate over array values
                    for (var i = 0, l = obj.length; i < l; i++) {
                        fn.call(null, obj[i], i, obj);
                    }
                } else {
                    // Iterate over object keys
                    for (var key in obj) {
                        if (Object.prototype.hasOwnProperty.call(obj, key)) {
                            fn.call(null, obj[key], key, obj);
                        }
                    }
                }
            }

            /**
             * Accepts varargs expecting each argument to be an object, then
             * immutably merges the properties of each object and returns result.
             *
             * When multiple objects contain the same key the later object in
             * the arguments list will take precedence.
             *
             * Example:
             *
             * ```js
             * var result = merge({foo: 123}, {foo: 456});
             * console.log(result.foo); // outputs 456
             * ```
             *
             * @param {Object} obj1 Object to merge
             * @returns {Object} Result of all merge properties
             */
            function merge(/* obj1, obj2, obj3, ... */) {
                var result = {};
                function assignValue(val, key) {
                    if (typeof result[key] === 'object' && typeof val === 'object') {
                        result[key] = merge(result[key], val);
                    } else {
                        result[key] = val;
                    }
                }

                for (var i = 0, l = arguments.length; i < l; i++) {
                    forEach(arguments[i], assignValue);
                }
                return result;
            }

            /**
             * Extends object a by mutably adding to it the properties of object b.
             *
             * @param {Object} a The object to be extended
             * @param {Object} b The object to copy properties from
             * @param {Object} thisArg The object to bind function to
             * @return {Object} The resulting value of object a
             */
            function extend(a, b, thisArg) {
                forEach(b, function assignValue(val, key) {
                    if (thisArg && typeof val === 'function') {
                        a[key] = bind(val, thisArg);
                    } else {
                        a[key] = val;
                    }
                });
                return a;
            }

            module.exports = {
                isArray: isArray,
                isArrayBuffer: isArrayBuffer,
                isBuffer: isBuffer,
                isFormData: isFormData,
                isArrayBufferView: isArrayBufferView,
                isString: isString,
                isNumber: isNumber,
                isObject: isObject,
                isUndefined: isUndefined,
                isDate: isDate,
                isFile: isFile,
                isBlob: isBlob,
                isFunction: isFunction,
                isStream: isStream,
                isURLSearchParams: isURLSearchParams,
                isStandardBrowserEnv: isStandardBrowserEnv,
                forEach: forEach,
                merge: merge,
                extend: extend,
                trim: trim
            };


            /***/ }),
        /* 4 */
        /***/ (function(module, __webpack_exports__, __webpack_require__) {

            "use strict";
            Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
            /* WEBPACK VAR INJECTION */(function(process) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "version", function() { return version; });
                /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DOM", function() { return DOM; });
                /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Children", function() { return Children; });
                /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render$1; });
                /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createClass", function() { return createClass; });
                /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createFactory", function() { return createFactory; });
                /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createElement", function() { return createElement; });
                /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cloneElement", function() { return cloneElement$1; });
                /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isValidElement", function() { return isValidElement; });
                /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findDOMNode", function() { return findDOMNode; });
                /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unmountComponentAtNode", function() { return unmountComponentAtNode; });
                /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Component", function() { return Component$1; });
                /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PureComponent", function() { return PureComponent; });
                /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unstable_renderSubtreeIntoContainer", function() { return renderSubtreeIntoContainer; });
                /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_prop_types__ = __webpack_require__(82);
                /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_prop_types__);
                /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_preact__ = __webpack_require__(86);
                /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_preact___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_preact__);
                /* harmony reexport (default from non-hamory) */ __webpack_require__.d(__webpack_exports__, "PropTypes", function() { return __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a; });



                var version = '15.1.0'; // trick libraries to think we are react

                var ELEMENTS = 'a abbr address area article aside audio b base bdi bdo big blockquote body br button canvas caption cite code col colgroup data datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 head header hgroup hr html i iframe img input ins kbd keygen label legend li link main map mark menu menuitem meta meter nav noscript object ol optgroup option output p param picture pre progress q rp rt ruby s samp script section select small source span strong style sub summary sup table tbody td textarea tfoot th thead time title tr track u ul var video wbr circle clipPath defs ellipse g image line linearGradient mask path pattern polygon polyline radialGradient rect stop svg text tspan'.split(' ');

                var REACT_ELEMENT_TYPE = (typeof Symbol!=='undefined' && Symbol.for && Symbol.for('react.element')) || 0xeac7;

                var COMPONENT_WRAPPER_KEY = typeof Symbol!=='undefined' ? Symbol.for('__preactCompatWrapper') : '__preactCompatWrapper';

// don't autobind these methods since they already have guaranteed context.
                var AUTOBIND_BLACKLIST = {
                    constructor: 1,
                    render: 1,
                    shouldComponentUpdate: 1,
                    componentWillReceiveProps: 1,
                    componentWillUpdate: 1,
                    componentDidUpdate: 1,
                    componentWillMount: 1,
                    componentDidMount: 1,
                    componentWillUnmount: 1,
                    componentDidUnmount: 1
                };


                var CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip|color|fill|flood|font|glyph|horiz|marker|overline|paint|stop|strikethrough|stroke|text|underline|unicode|units|v|vert|word|writing|x)[A-Z]/;


                var BYPASS_HOOK = {};

                /*global process*/
                var DEV = typeof process==='undefined' || !process.env || process.env.NODE_ENV!=='production';

// a component that renders nothing. Used to replace components for unmountComponentAtNode.
                function EmptyComponent() { return null; }



// make react think we're react.
                var VNode = __WEBPACK_IMPORTED_MODULE_1_preact__["h"]('a', null).constructor;
                VNode.prototype.$$typeof = REACT_ELEMENT_TYPE;
                VNode.prototype.preactCompatUpgraded = false;
                VNode.prototype.preactCompatNormalized = false;

                Object.defineProperty(VNode.prototype, 'type', {
                    get: function() { return this.nodeName; },
                    set: function(v) { this.nodeName = v; },
                    configurable:true
                });

                Object.defineProperty(VNode.prototype, 'props', {
                    get: function() { return this.attributes; },
                    set: function(v) { this.attributes = v; },
                    configurable:true
                });



                var oldEventHook = __WEBPACK_IMPORTED_MODULE_1_preact__["options"].event;
                __WEBPACK_IMPORTED_MODULE_1_preact__["options"].event = function (e) {
                    if (oldEventHook) { e = oldEventHook(e); }
                    e.persist = Object;
                    e.nativeEvent = e;
                    return e;
                };


                var oldVnodeHook = __WEBPACK_IMPORTED_MODULE_1_preact__["options"].vnode;
                __WEBPACK_IMPORTED_MODULE_1_preact__["options"].vnode = function (vnode) {
                    if (!vnode.preactCompatUpgraded) {
                        vnode.preactCompatUpgraded = true;

                        var tag = vnode.nodeName,
                            attrs = vnode.attributes = extend({}, vnode.attributes);

                        if (typeof tag==='function') {
                            if (tag[COMPONENT_WRAPPER_KEY]===true || (tag.prototype && 'isReactComponent' in tag.prototype)) {
                                if (vnode.children && String(vnode.children)==='') { vnode.children = undefined; }
                                if (vnode.children) { attrs.children = vnode.children; }

                                if (!vnode.preactCompatNormalized) {
                                    normalizeVNode(vnode);
                                }
                                handleComponentVNode(vnode);
                            }
                        }
                        else {
                            if (vnode.children && String(vnode.children)==='') { vnode.children = undefined; }
                            if (vnode.children) { attrs.children = vnode.children; }

                            if (attrs.defaultValue) {
                                if (!attrs.value && attrs.value!==0) {
                                    attrs.value = attrs.defaultValue;
                                }
                                delete attrs.defaultValue;
                            }

                            handleElementVNode(vnode, attrs);
                        }
                    }

                    if (oldVnodeHook) { oldVnodeHook(vnode); }
                };

                function handleComponentVNode(vnode) {
                    var tag = vnode.nodeName,
                        a = vnode.attributes;

                    vnode.attributes = {};
                    if (tag.defaultProps) { extend(vnode.attributes, tag.defaultProps); }
                    if (a) { extend(vnode.attributes, a); }
                }

                function handleElementVNode(vnode, a) {
                    var shouldSanitize, attrs, i;
                    if (a) {
                        for (i in a) { if ((shouldSanitize = CAMEL_PROPS.test(i))) { break; } }
                        if (shouldSanitize) {
                            attrs = vnode.attributes = {};
                            for (i in a) {
                                if (a.hasOwnProperty(i)) {
                                    attrs[ CAMEL_PROPS.test(i) ? i.replace(/([A-Z0-9])/, '-$1').toLowerCase() : i ] = a[i];
                                }
                            }
                        }
                    }
                }



// proxy render() since React returns a Component reference.
                function render$1(vnode, parent, callback) {
                    var prev = parent && parent._preactCompatRendered && parent._preactCompatRendered.base;

                    // ignore impossible previous renders
                    if (prev && prev.parentNode!==parent) { prev = null; }

                    // default to first Element child
                    if (!prev) { prev = parent.children[0]; }

                    // remove unaffected siblings
                    for (var i=parent.childNodes.length; i--; ) {
                        if (parent.childNodes[i]!==prev) {
                            parent.removeChild(parent.childNodes[i]);
                        }
                    }

                    var out = __WEBPACK_IMPORTED_MODULE_1_preact__["render"](vnode, parent, prev);
                    if (parent) { parent._preactCompatRendered = out && (out._component || { base: out }); }
                    if (typeof callback==='function') { callback(); }
                    return out && out._component || out;
                }


                var ContextProvider = function () {};

                ContextProvider.prototype.getChildContext = function () {
                    return this.props.context;
                };
                ContextProvider.prototype.render = function (props) {
                    return props.children[0];
                };

                function renderSubtreeIntoContainer(parentComponent, vnode, container, callback) {
                    var wrap = __WEBPACK_IMPORTED_MODULE_1_preact__["h"](ContextProvider, { context: parentComponent.context }, vnode);
                    var c = render$1(wrap, container);
                    if (callback) { callback(c); }
                    return c._component || c.base;
                }


                function unmountComponentAtNode(container) {
                    var existing = container._preactCompatRendered && container._preactCompatRendered.base;
                    if (existing && existing.parentNode===container) {
                        __WEBPACK_IMPORTED_MODULE_1_preact__["render"](__WEBPACK_IMPORTED_MODULE_1_preact__["h"](EmptyComponent), container, existing);
                        return true;
                    }
                    return false;
                }



                var ARR = [];

// This API is completely unnecessary for Preact, so it's basically passthrough.
                var Children = {
                    map: function(children, fn, ctx) {
                        if (children == null) { return null; }
                        children = Children.toArray(children);
                        if (ctx && ctx!==children) { fn = fn.bind(ctx); }
                        return children.map(fn);
                    },
                    forEach: function(children, fn, ctx) {
                        if (children == null) { return null; }
                        children = Children.toArray(children);
                        if (ctx && ctx!==children) { fn = fn.bind(ctx); }
                        children.forEach(fn);
                    },
                    count: function(children) {
                        return children && children.length || 0;
                    },
                    only: function(children) {
                        children = Children.toArray(children);
                        if (children.length!==1) { throw new Error('Children.only() expects only one child.'); }
                        return children[0];
                    },
                    toArray: function(children) {
                        if (children == null) { return []; }
                        return Array.isArray && Array.isArray(children) ? children : ARR.concat(children);
                    }
                };


                /** Track current render() component for ref assignment */
                var currentComponent;


                function createFactory(type) {
                    return createElement.bind(null, type);
                }


                var DOM = {};
                for (var i=ELEMENTS.length; i--; ) {
                    DOM[ELEMENTS[i]] = createFactory(ELEMENTS[i]);
                }

                function upgradeToVNodes(arr, offset) {
                    for (var i=offset || 0; i<arr.length; i++) {
                        var obj = arr[i];
                        if (Array.isArray(obj)) {
                            upgradeToVNodes(obj);
                        }
                        else if (obj && typeof obj==='object' && !isValidElement(obj) && ((obj.props && obj.type) || (obj.attributes && obj.nodeName) || obj.children)) {
                            arr[i] = createElement(obj.type || obj.nodeName, obj.props || obj.attributes, obj.children);
                        }
                    }
                }

                function isStatelessComponent(c) {
                    return typeof c==='function' && !(c.prototype && c.prototype.render);
                }


// wraps stateless functional components in a PropTypes validator
                function wrapStatelessComponent(WrappedComponent) {
                    return createClass({
                        displayName: WrappedComponent.displayName || WrappedComponent.name,
                        render: function() {
                            return WrappedComponent(this.props, this.context);
                        }
                    });
                }


                function statelessComponentHook(Ctor) {
                    var Wrapped = Ctor[COMPONENT_WRAPPER_KEY];
                    if (Wrapped) { return Wrapped===true ? Ctor : Wrapped; }

                    Wrapped = wrapStatelessComponent(Ctor);

                    Object.defineProperty(Wrapped, COMPONENT_WRAPPER_KEY, { configurable:true, value:true });
                    Wrapped.displayName = Ctor.displayName;
                    Wrapped.propTypes = Ctor.propTypes;
                    Wrapped.defaultProps = Ctor.defaultProps;

                    Object.defineProperty(Ctor, COMPONENT_WRAPPER_KEY, { configurable:true, value:Wrapped });

                    return Wrapped;
                }


                function createElement() {
                    var args = [], len = arguments.length;
                    while ( len-- ) args[ len ] = arguments[ len ];

                    upgradeToVNodes(args, 2);
                    return normalizeVNode(__WEBPACK_IMPORTED_MODULE_1_preact__["h"].apply(void 0, args));
                }


                function normalizeVNode(vnode) {
                    vnode.preactCompatNormalized = true;

                    applyClassName(vnode);

                    if (isStatelessComponent(vnode.nodeName)) {
                        vnode.nodeName = statelessComponentHook(vnode.nodeName);
                    }

                    var ref = vnode.attributes.ref,
                        type = ref && typeof ref;
                    if (currentComponent && (type==='string' || type==='number')) {
                        vnode.attributes.ref = createStringRefProxy(ref, currentComponent);
                    }

                    applyEventNormalization(vnode);

                    return vnode;
                }


                function cloneElement$1(element, props) {
                    var children = [], len = arguments.length - 2;
                    while ( len-- > 0 ) children[ len ] = arguments[ len + 2 ];

                    if (!isValidElement(element)) { return element; }
                    var elementProps = element.attributes || element.props;
                    var node = __WEBPACK_IMPORTED_MODULE_1_preact__["h"](
                        element.nodeName || element.type,
                        elementProps,
                        element.children || elementProps && elementProps.children
                    );
                    // Only provide the 3rd argument if needed.
                    // Arguments 3+ overwrite element.children in preactCloneElement
                    var cloneArgs = [node, props];
                    if (children && children.length) {
                        cloneArgs.push(children);
                    }
                    else if (props && props.children) {
                        cloneArgs.push(props.children);
                    }
                    return normalizeVNode(__WEBPACK_IMPORTED_MODULE_1_preact__["cloneElement"].apply(void 0, cloneArgs));
                }


                function isValidElement(element) {
                    return element && ((element instanceof VNode) || element.$$typeof===REACT_ELEMENT_TYPE);
                }


                function createStringRefProxy(name, component) {
                    return component._refProxies[name] || (component._refProxies[name] = function (resolved) {
                            if (component && component.refs) {
                                component.refs[name] = resolved;
                                if (resolved===null) {
                                    delete component._refProxies[name];
                                    component = null;
                                }
                            }
                        });
                }


                function applyEventNormalization(ref) {
                    var nodeName = ref.nodeName;
                    var attributes = ref.attributes;

                    if (!attributes || typeof nodeName!=='string') { return; }
                    var props = {};
                    for (var i in attributes) {
                        props[i.toLowerCase()] = i;
                    }
                    if (props.ondoubleclick) {
                        attributes.ondblclick = attributes[props.ondoubleclick];
                        delete attributes[props.ondoubleclick];
                    }
                    // for *textual inputs* (incl textarea), normalize `onChange` -> `onInput`:
                    if (props.onchange && (nodeName==='textarea' || (nodeName.toLowerCase()==='input' && !/^fil|che|rad/i.test(attributes.type)))) {
                        var normalized = props.oninput || 'oninput';
                        if (!attributes[normalized]) {
                            attributes[normalized] = multihook([attributes[normalized], attributes[props.onchange]]);
                            delete attributes[props.onchange];
                        }
                    }
                }


                function applyClassName(ref) {
                    var attributes = ref.attributes;

                    if (!attributes) { return; }
                    var cl = attributes.className || attributes.class;
                    if (cl) { attributes.className = cl; }
                }


                function extend(base, props) {
                    for (var key in props) {
                        if (props.hasOwnProperty(key)) {
                            base[key] = props[key];
                        }
                    }
                    return base;
                }


                function shallowDiffers(a, b) {
                    for (var i in a) { if (!(i in b)) { return true; } }
                    for (var i$1 in b) { if (a[i$1]!==b[i$1]) { return true; } }
                    return false;
                }


                function findDOMNode(component) {
                    return component && component.base || component;
                }


                function F(){}

                function createClass(obj) {
                    function cl(props, context) {
                        bindAll(this);
                        Component$1.call(this, props, context, BYPASS_HOOK);
                        newComponentHook.call(this, props, context);
                    }

                    obj = extend({ constructor: cl }, obj);

                    // We need to apply mixins here so that getDefaultProps is correctly mixed
                    if (obj.mixins) {
                        applyMixins(obj, collateMixins(obj.mixins));
                    }
                    if (obj.statics) {
                        extend(cl, obj.statics);
                    }
                    if (obj.propTypes) {
                        cl.propTypes = obj.propTypes;
                    }
                    if (obj.defaultProps) {
                        cl.defaultProps = obj.defaultProps;
                    }
                    if (obj.getDefaultProps) {
                        cl.defaultProps = obj.getDefaultProps();
                    }

                    F.prototype = Component$1.prototype;
                    cl.prototype = extend(new F(), obj);

                    cl.displayName = obj.displayName || 'Component';

                    return cl;
                }


// Flatten an Array of mixins to a map of method name to mixin implementations
                function collateMixins(mixins) {
                    var keyed = {};
                    for (var i=0; i<mixins.length; i++) {
                        var mixin = mixins[i];
                        for (var key in mixin) {
                            if (mixin.hasOwnProperty(key) && typeof mixin[key]==='function') {
                                (keyed[key] || (keyed[key]=[])).push(mixin[key]);
                            }
                        }
                    }
                    return keyed;
                }


// apply a mapping of Arrays of mixin methods to a component prototype
                function applyMixins(proto, mixins) {
                    for (var key in mixins) { if (mixins.hasOwnProperty(key)) {
                        proto[key] = multihook(
                            mixins[key].concat(proto[key] || ARR),
                            key==='getDefaultProps' || key==='getInitialState' || key==='getChildContext'
                        );
                    } }
                }


                function bindAll(ctx) {
                    for (var i in ctx) {
                        var v = ctx[i];
                        if (typeof v==='function' && !v.__bound && !AUTOBIND_BLACKLIST.hasOwnProperty(i)) {
                            (ctx[i] = v.bind(ctx)).__bound = true;
                        }
                    }
                }


                function callMethod(ctx, m, args) {
                    if (typeof m==='string') {
                        m = ctx.constructor.prototype[m];
                    }
                    if (typeof m==='function') {
                        return m.apply(ctx, args);
                    }
                }

                function multihook(hooks, skipDuplicates) {
                    return function() {
                        var arguments$1 = arguments;
                        var this$1 = this;

                        var ret;
                        for (var i=0; i<hooks.length; i++) {
                            var r = callMethod(this$1, hooks[i], arguments$1);

                            if (skipDuplicates && r!=null) {
                                if (!ret) { ret = {}; }
                                for (var key in r) { if (r.hasOwnProperty(key)) {
                                    ret[key] = r[key];
                                } }
                            }
                            else if (typeof r!=='undefined') { ret = r; }
                        }
                        return ret;
                    };
                }


                function newComponentHook(props, context) {
                    propsHook.call(this, props, context);
                    this.componentWillReceiveProps = multihook([propsHook, this.componentWillReceiveProps || 'componentWillReceiveProps']);
                    this.render = multihook([propsHook, beforeRender, this.render || 'render', afterRender]);
                }


                function propsHook(props, context) {
                    if (!props) { return; }

                    // React annoyingly special-cases single children, and some react components are ridiculously strict about this.
                    var c = props.children;
                    if (c && Array.isArray(c) && c.length===1) {
                        props.children = c[0];

                        // but its totally still going to be an Array.
                        if (props.children && typeof props.children==='object') {
                            props.children.length = 1;
                            props.children[0] = props.children;
                        }
                    }

                    // add proptype checking
                    if (DEV) {
                        var ctor = typeof this==='function' ? this : this.constructor,
                            propTypes = this.propTypes || ctor.propTypes;
                        var displayName = this.displayName || ctor.name;

                        if (propTypes) {
                            __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.checkPropTypes(propTypes, props, 'prop', displayName);
                        }
                    }
                }


                function beforeRender(props) {
                    currentComponent = this;
                }

                function afterRender() {
                    if (currentComponent===this) {
                        currentComponent = null;
                    }
                }



                function Component$1(props, context, opts) {
                    __WEBPACK_IMPORTED_MODULE_1_preact__["Component"].call(this, props, context);
                    this.state = this.getInitialState ? this.getInitialState() : {};
                    this.refs = {};
                    this._refProxies = {};
                    if (opts!==BYPASS_HOOK) {
                        newComponentHook.call(this, props, context);
                    }
                }
                extend(Component$1.prototype = new __WEBPACK_IMPORTED_MODULE_1_preact__["Component"](), {
                    constructor: Component$1,

                    isReactComponent: {},

                    replaceState: function(state, callback) {
                        var this$1 = this;

                        this.setState(state, callback);
                        for (var i in this$1.state) {
                            if (!(i in state)) {
                                delete this$1.state[i];
                            }
                        }
                    },

                    getDOMNode: function() {
                        return this.base;
                    },

                    isMounted: function() {
                        return !!this.base;
                    }
                });



                function PureComponent(props, context) {
                    Component$1.call(this, props, context);
                }
                F.prototype = Component$1.prototype;
                PureComponent.prototype = new F();
                PureComponent.prototype.isPureReactComponent = true;
                PureComponent.prototype.shouldComponentUpdate = function(props, state) {
                    return shallowDiffers(this.props, props) || shallowDiffers(this.state, state);
                };



                var index = {
                    version: version,
                    DOM: DOM,
                    PropTypes: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a,
                    Children: Children,
                    render: render$1,
                    createClass: createClass,
                    createFactory: createFactory,
                    createElement: createElement,
                    cloneElement: cloneElement$1,
                    isValidElement: isValidElement,
                    findDOMNode: findDOMNode,
                    unmountComponentAtNode: unmountComponentAtNode,
                    Component: Component$1,
                    PureComponent: PureComponent,
                    unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer
                };

                /* harmony default export */ __webpack_exports__["default"] = (index);
//# sourceMappingURL=preact-compat.es.js.map

                /* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(8)))

            /***/ }),
        /* 5 */
        /***/ (function(module, exports, __webpack_require__) {

            var global    = __webpack_require__(2)
                , core      = __webpack_require__(0)
                , ctx       = __webpack_require__(13)
                , hide      = __webpack_require__(10)
                , PROTOTYPE = 'prototype';

            var $export = function(type, name, source){
                var IS_FORCED = type & $export.F
                    , IS_GLOBAL = type & $export.G
                    , IS_STATIC = type & $export.S
                    , IS_PROTO  = type & $export.P
                    , IS_BIND   = type & $export.B
                    , IS_WRAP   = type & $export.W
                    , exports   = IS_GLOBAL ? core : core[name] || (core[name] = {})
                    , expProto  = exports[PROTOTYPE]
                    , target    = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
                    , key, own, out;
                if(IS_GLOBAL)source = name;
                for(key in source){
                    // contains in native
                    own = !IS_FORCED && target && target[key] !== undefined;
                    if(own && key in exports)continue;
                    // export native or passed
                    out = own ? target[key] : source[key];
                    // prevent global pollution for namespaces
                    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
                        // bind timers to global for call from export context
                        : IS_BIND && own ? ctx(out, global)
                            // wrap global constructors for prevent change them in library
                            : IS_WRAP && target[key] == out ? (function(C){
                                var F = function(a, b, c){
                                    if(this instanceof C){
                                        switch(arguments.length){
                                            case 0: return new C;
                                            case 1: return new C(a);
                                            case 2: return new C(a, b);
                                        } return new C(a, b, c);
                                    } return C.apply(this, arguments);
                                };
                                F[PROTOTYPE] = C[PROTOTYPE];
                                return F;
                                // make static versions for prototype methods
                            })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
                    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
                    if(IS_PROTO){
                        (exports.virtual || (exports.virtual = {}))[key] = out;
                        // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
                        if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);
                    }
                }
            };
// type bitmap
            $export.F = 1;   // forced
            $export.G = 2;   // global
            $export.S = 4;   // static
            $export.P = 8;   // proto
            $export.B = 16;  // bind
            $export.W = 32;  // wrap
            $export.U = 64;  // safe
            $export.R = 128; // real proto method for `library`
            module.exports = $export;

            /***/ }),
        /* 6 */
        /***/ (function(module, exports, __webpack_require__) {

            var anObject       = __webpack_require__(7)
                , IE8_DOM_DEFINE = __webpack_require__(50)
                , toPrimitive    = __webpack_require__(32)
                , dP             = Object.defineProperty;

            exports.f = __webpack_require__(9) ? Object.defineProperty : function defineProperty(O, P, Attributes){
                anObject(O);
                P = toPrimitive(P, true);
                anObject(Attributes);
                if(IE8_DOM_DEFINE)try {
                    return dP(O, P, Attributes);
                } catch(e){ /* empty */ }
                if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
                if('value' in Attributes)O[P] = Attributes.value;
                return O;
            };

            /***/ }),
        /* 7 */
        /***/ (function(module, exports, __webpack_require__) {

            var isObject = __webpack_require__(14);
            module.exports = function(it){
                if(!isObject(it))throw TypeError(it + ' is not an object!');
                return it;
            };

            /***/ }),
        /* 8 */
        /***/ (function(module, exports) {

// shim for using process in browser
            var process = module.exports = {};

// cached from whatever global is present so that test runners that stub it
// don't break things.  But we need to wrap it in a try catch in case it is
// wrapped in strict mode code which doesn't define any globals.  It's inside a
// function because try/catches deoptimize in certain engines.

            var cachedSetTimeout;
            var cachedClearTimeout;

            function defaultSetTimout() {
                throw new Error('setTimeout has not been defined');
            }
            function defaultClearTimeout () {
                throw new Error('clearTimeout has not been defined');
            }
            (function () {
                try {
                    if (typeof setTimeout === 'function') {
                        cachedSetTimeout = setTimeout;
                    } else {
                        cachedSetTimeout = defaultSetTimout;
                    }
                } catch (e) {
                    cachedSetTimeout = defaultSetTimout;
                }
                try {
                    if (typeof clearTimeout === 'function') {
                        cachedClearTimeout = clearTimeout;
                    } else {
                        cachedClearTimeout = defaultClearTimeout;
                    }
                } catch (e) {
                    cachedClearTimeout = defaultClearTimeout;
                }
            } ())
            function runTimeout(fun) {
                if (cachedSetTimeout === setTimeout) {
                    //normal enviroments in sane situations
                    return setTimeout(fun, 0);
                }
                // if setTimeout wasn't available but was latter defined
                if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
                    cachedSetTimeout = setTimeout;
                    return setTimeout(fun, 0);
                }
                try {
                    // when when somebody has screwed with setTimeout but no I.E. maddness
                    return cachedSetTimeout(fun, 0);
                } catch(e){
                    try {
                        // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
                        return cachedSetTimeout.call(null, fun, 0);
                    } catch(e){
                        // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
                        return cachedSetTimeout.call(this, fun, 0);
                    }
                }


            }
            function runClearTimeout(marker) {
                if (cachedClearTimeout === clearTimeout) {
                    //normal enviroments in sane situations
                    return clearTimeout(marker);
                }
                // if clearTimeout wasn't available but was latter defined
                if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
                    cachedClearTimeout = clearTimeout;
                    return clearTimeout(marker);
                }
                try {
                    // when when somebody has screwed with setTimeout but no I.E. maddness
                    return cachedClearTimeout(marker);
                } catch (e){
                    try {
                        // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
                        return cachedClearTimeout.call(null, marker);
                    } catch (e){
                        // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
                        // Some versions of I.E. have different rules for clearTimeout vs setTimeout
                        return cachedClearTimeout.call(this, marker);
                    }
                }



            }
            var queue = [];
            var draining = false;
            var currentQueue;
            var queueIndex = -1;

            function cleanUpNextTick() {
                if (!draining || !currentQueue) {
                    return;
                }
                draining = false;
                if (currentQueue.length) {
                    queue = currentQueue.concat(queue);
                } else {
                    queueIndex = -1;
                }
                if (queue.length) {
                    drainQueue();
                }
            }

            function drainQueue() {
                if (draining) {
                    return;
                }
                var timeout = runTimeout(cleanUpNextTick);
                draining = true;

                var len = queue.length;
                while(len) {
                    currentQueue = queue;
                    queue = [];
                    while (++queueIndex < len) {
                        if (currentQueue) {
                            currentQueue[queueIndex].run();
                        }
                    }
                    queueIndex = -1;
                    len = queue.length;
                }
                currentQueue = null;
                draining = false;
                runClearTimeout(timeout);
            }

            process.nextTick = function (fun) {
                var args = new Array(arguments.length - 1);
                if (arguments.length > 1) {
                    for (var i = 1; i < arguments.length; i++) {
                        args[i - 1] = arguments[i];
                    }
                }
                queue.push(new Item(fun, args));
                if (queue.length === 1 && !draining) {
                    runTimeout(drainQueue);
                }
            };

// v8 likes predictible objects
            function Item(fun, array) {
                this.fun = fun;
                this.array = array;
            }
            Item.prototype.run = function () {
                this.fun.apply(null, this.array);
            };
            process.title = 'browser';
            process.browser = true;
            process.env = {};
            process.argv = [];
            process.version = ''; // empty string to avoid regexp issues
            process.versions = {};

            function noop() {}

            process.on = noop;
            process.addListener = noop;
            process.once = noop;
            process.off = noop;
            process.removeListener = noop;
            process.removeAllListeners = noop;
            process.emit = noop;
            process.prependListener = noop;
            process.prependOnceListener = noop;

            process.listeners = function (name) { return [] }

            process.binding = function (name) {
                throw new Error('process.binding is not supported');
            };

            process.cwd = function () { return '/' };
            process.chdir = function (dir) {
                throw new Error('process.chdir is not supported');
            };
            process.umask = function() { return 0; };


            /***/ }),
        /* 9 */
        /***/ (function(module, exports, __webpack_require__) {

// Thank's IE8 for his funny defineProperty
            module.exports = !__webpack_require__(15)(function(){
                return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
            });

            /***/ }),
        /* 10 */
        /***/ (function(module, exports, __webpack_require__) {

            var dP         = __webpack_require__(6)
                , createDesc = __webpack_require__(19);
            module.exports = __webpack_require__(9) ? function(object, key, value){
                return dP.f(object, key, createDesc(1, value));
            } : function(object, key, value){
                object[key] = value;
                return object;
            };

            /***/ }),
        /* 11 */
        /***/ (function(module, exports) {

            var hasOwnProperty = {}.hasOwnProperty;
            module.exports = function(it, key){
                return hasOwnProperty.call(it, key);
            };

            /***/ }),
        /* 12 */
        /***/ (function(module, exports, __webpack_require__) {

// to indexed object, toObject with fallback for non-array-like ES3 strings
            var IObject = __webpack_require__(56)
                , defined = __webpack_require__(37);
            module.exports = function(it){
                return IObject(defined(it));
            };

            /***/ }),
        /* 13 */
        /***/ (function(module, exports, __webpack_require__) {

// optional / simple context binding
            var aFunction = __webpack_require__(30);
            module.exports = function(fn, that, length){
                aFunction(fn);
                if(that === undefined)return fn;
                switch(length){
                    case 1: return function(a){
                        return fn.call(that, a);
                    };
                    case 2: return function(a, b){
                        return fn.call(that, a, b);
                    };
                    case 3: return function(a, b, c){
                        return fn.call(that, a, b, c);
                    };
                }
                return function(/* ...args */){
                    return fn.apply(that, arguments);
                };
            };

            /***/ }),
        /* 14 */
        /***/ (function(module, exports) {

            module.exports = function(it){
                return typeof it === 'object' ? it !== null : typeof it === 'function';
            };

            /***/ }),
        /* 15 */
        /***/ (function(module, exports) {

            module.exports = function(exec){
                try {
                    return !!exec();
                } catch(e){
                    return true;
                }
            };

            /***/ }),
        /* 16 */
        /***/ (function(module, exports) {

            module.exports = {};

            /***/ }),
        /* 17 */
        /***/ (function(module, exports, __webpack_require__) {

// 19.1.2.14 / 15.2.3.14 Object.keys(O)
            var $keys       = __webpack_require__(55)
                , enumBugKeys = __webpack_require__(42);

            module.exports = Object.keys || function keys(O){
                    return $keys(O, enumBugKeys);
                };

            /***/ }),
        /* 18 */
        /***/ (function(module, exports, __webpack_require__) {

            var isDate = __webpack_require__(188)

            var MILLISECONDS_IN_HOUR = 3600000
            var MILLISECONDS_IN_MINUTE = 60000
            var DEFAULT_ADDITIONAL_DIGITS = 2

            var parseTokenDateTimeDelimeter = /[T ]/
            var parseTokenPlainTime = /:/

// year tokens
            var parseTokenYY = /^(\d{2})$/
            var parseTokensYYY = [
                /^([+-]\d{2})$/, // 0 additional digits
                /^([+-]\d{3})$/, // 1 additional digit
                /^([+-]\d{4})$/ // 2 additional digits
            ]

            var parseTokenYYYY = /^(\d{4})/
            var parseTokensYYYYY = [
                /^([+-]\d{4})/, // 0 additional digits
                /^([+-]\d{5})/, // 1 additional digit
                /^([+-]\d{6})/ // 2 additional digits
            ]

// date tokens
            var parseTokenMM = /^-(\d{2})$/
            var parseTokenDDD = /^-?(\d{3})$/
            var parseTokenMMDD = /^-?(\d{2})-?(\d{2})$/
            var parseTokenWww = /^-?W(\d{2})$/
            var parseTokenWwwD = /^-?W(\d{2})-?(\d{1})$/

// time tokens
            var parseTokenHH = /^(\d{2}([.,]\d*)?)$/
            var parseTokenHHMM = /^(\d{2}):?(\d{2}([.,]\d*)?)$/
            var parseTokenHHMMSS = /^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/

// timezone tokens
            var parseTokenTimezone = /([Z+-].*)$/
            var parseTokenTimezoneZ = /^(Z)$/
            var parseTokenTimezoneHH = /^([+-])(\d{2})$/
            var parseTokenTimezoneHHMM = /^([+-])(\d{2}):?(\d{2})$/

            /**
             * @category Common Helpers
             * @summary Convert the given argument to an instance of Date.
             *
             * @description
             * Convert the given argument to an instance of Date.
             *
             * If the argument is an instance of Date, the function returns its clone.
             *
             * If the argument is a number, it is treated as a timestamp.
             *
             * If an argument is a string, the function tries to parse it.
             * Function accepts complete ISO 8601 formats as well as partial implementations.
             * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601
             *
             * If all above fails, the function passes the given argument to Date constructor.
             *
             * @param {Date|String|Number} argument - the value to convert
             * @param {Object} [options] - the object with options
             * @param {0 | 1 | 2} [options.additionalDigits=2] - the additional number of digits in the extended year format
             * @returns {Date} the parsed date in the local time zone
             *
             * @example
             * // Convert string '2014-02-11T11:30:30' to date:
             * var result = parse('2014-02-11T11:30:30')
             * //=> Tue Feb 11 2014 11:30:30
             *
             * @example
             * // Parse string '+02014101',
             * // if the additional number of digits in the extended year format is 1:
             * var result = parse('+02014101', {additionalDigits: 1})
             * //=> Fri Apr 11 2014 00:00:00
             */
            function parse (argument, dirtyOptions) {
                if (isDate(argument)) {
                    // Prevent the date to lose the milliseconds when passed to new Date() in IE10
                    return new Date(argument.getTime())
                } else if (typeof argument !== 'string') {
                    return new Date(argument)
                }

                var options = dirtyOptions || {}
                var additionalDigits = options.additionalDigits
                if (additionalDigits == null) {
                    additionalDigits = DEFAULT_ADDITIONAL_DIGITS
                } else {
                    additionalDigits = Number(additionalDigits)
                }

                var dateStrings = splitDateString(argument)

                var parseYearResult = parseYear(dateStrings.date, additionalDigits)
                var year = parseYearResult.year
                var restDateString = parseYearResult.restDateString

                var date = parseDate(restDateString, year)

                if (date) {
                    var timestamp = date.getTime()
                    var time = 0
                    var offset

                    if (dateStrings.time) {
                        time = parseTime(dateStrings.time)
                    }

                    if (dateStrings.timezone) {
                        offset = parseTimezone(dateStrings.timezone)
                    } else {
                        // get offset accurate to hour in timezones that change offset
                        offset = new Date(timestamp + time).getTimezoneOffset()
                        offset = new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE).getTimezoneOffset()
                    }

                    return new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE)
                } else {
                    return new Date(argument)
                }
            }

            function splitDateString (dateString) {
                var dateStrings = {}
                var array = dateString.split(parseTokenDateTimeDelimeter)
                var timeString

                if (parseTokenPlainTime.test(array[0])) {
                    dateStrings.date = null
                    timeString = array[0]
                } else {
                    dateStrings.date = array[0]
                    timeString = array[1]
                }

                if (timeString) {
                    var token = parseTokenTimezone.exec(timeString)
                    if (token) {
                        dateStrings.time = timeString.replace(token[1], '')
                        dateStrings.timezone = token[1]
                    } else {
                        dateStrings.time = timeString
                    }
                }

                return dateStrings
            }

            function parseYear (dateString, additionalDigits) {
                var parseTokenYYY = parseTokensYYY[additionalDigits]
                var parseTokenYYYYY = parseTokensYYYYY[additionalDigits]

                var token

                // YYYY or ±YYYYY
                token = parseTokenYYYY.exec(dateString) || parseTokenYYYYY.exec(dateString)
                if (token) {
                    var yearString = token[1]
                    return {
                        year: parseInt(yearString, 10),
                        restDateString: dateString.slice(yearString.length)
                    }
                }

                // YY or ±YYY
                token = parseTokenYY.exec(dateString) || parseTokenYYY.exec(dateString)
                if (token) {
                    var centuryString = token[1]
                    return {
                        year: parseInt(centuryString, 10) * 100,
                        restDateString: dateString.slice(centuryString.length)
                    }
                }

                // Invalid ISO-formatted year
                return {
                    year: null
                }
            }

            function parseDate (dateString, year) {
                // Invalid ISO-formatted year
                if (year === null) {
                    return null
                }

                var token
                var date
                var month
                var week

                // YYYY
                if (dateString.length === 0) {
                    date = new Date(0)
                    date.setUTCFullYear(year)
                    return date
                }

                // YYYY-MM
                token = parseTokenMM.exec(dateString)
                if (token) {
                    date = new Date(0)
                    month = parseInt(token[1], 10) - 1
                    date.setUTCFullYear(year, month)
                    return date
                }

                // YYYY-DDD or YYYYDDD
                token = parseTokenDDD.exec(dateString)
                if (token) {
                    date = new Date(0)
                    var dayOfYear = parseInt(token[1], 10)
                    date.setUTCFullYear(year, 0, dayOfYear)
                    return date
                }

                // YYYY-MM-DD or YYYYMMDD
                token = parseTokenMMDD.exec(dateString)
                if (token) {
                    date = new Date(0)
                    month = parseInt(token[1], 10) - 1
                    var day = parseInt(token[2], 10)
                    date.setUTCFullYear(year, month, day)
                    return date
                }

                // YYYY-Www or YYYYWww
                token = parseTokenWww.exec(dateString)
                if (token) {
                    week = parseInt(token[1], 10) - 1
                    return dayOfISOYear(year, week)
                }

                // YYYY-Www-D or YYYYWwwD
                token = parseTokenWwwD.exec(dateString)
                if (token) {
                    week = parseInt(token[1], 10) - 1
                    var dayOfWeek = parseInt(token[2], 10) - 1
                    return dayOfISOYear(year, week, dayOfWeek)
                }

                // Invalid ISO-formatted date
                return null
            }

            function parseTime (timeString) {
                var token
                var hours
                var minutes

                // hh
                token = parseTokenHH.exec(timeString)
                if (token) {
                    hours = parseFloat(token[1].replace(',', '.'))
                    return (hours % 24) * MILLISECONDS_IN_HOUR
                }

                // hh:mm or hhmm
                token = parseTokenHHMM.exec(timeString)
                if (token) {
                    hours = parseInt(token[1], 10)
                    minutes = parseFloat(token[2].replace(',', '.'))
                    return (hours % 24) * MILLISECONDS_IN_HOUR +
                        minutes * MILLISECONDS_IN_MINUTE
                }

                // hh:mm:ss or hhmmss
                token = parseTokenHHMMSS.exec(timeString)
                if (token) {
                    hours = parseInt(token[1], 10)
                    minutes = parseInt(token[2], 10)
                    var seconds = parseFloat(token[3].replace(',', '.'))
                    return (hours % 24) * MILLISECONDS_IN_HOUR +
                        minutes * MILLISECONDS_IN_MINUTE +
                        seconds * 1000
                }

                // Invalid ISO-formatted time
                return null
            }

            function parseTimezone (timezoneString) {
                var token
                var absoluteOffset

                // Z
                token = parseTokenTimezoneZ.exec(timezoneString)
                if (token) {
                    return 0
                }

                // ±hh
                token = parseTokenTimezoneHH.exec(timezoneString)
                if (token) {
                    absoluteOffset = parseInt(token[2], 10) * 60
                    return (token[1] === '+') ? -absoluteOffset : absoluteOffset
                }

                // ±hh:mm or ±hhmm
                token = parseTokenTimezoneHHMM.exec(timezoneString)
                if (token) {
                    absoluteOffset = parseInt(token[2], 10) * 60 + parseInt(token[3], 10)
                    return (token[1] === '+') ? -absoluteOffset : absoluteOffset
                }

                return 0
            }

            function dayOfISOYear (isoYear, week, day) {
                week = week || 0
                day = day || 0
                var date = new Date(0)
                date.setUTCFullYear(isoYear, 0, 4)
                var fourthOfJanuaryDay = date.getUTCDay() || 7
                var diff = week * 7 + day + 1 - fourthOfJanuaryDay
                date.setUTCDate(date.getUTCDate() + diff)
                return date
            }

            module.exports = parse


            /***/ }),
        /* 19 */
        /***/ (function(module, exports) {

            module.exports = function(bitmap, value){
                return {
                    enumerable  : !(bitmap & 1),
                    configurable: !(bitmap & 2),
                    writable    : !(bitmap & 4),
                    value       : value
                };
            };

            /***/ }),
        /* 20 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";

            var $at  = __webpack_require__(90)(true);

// 21.1.3.27 String.prototype[@@iterator]()
            __webpack_require__(53)(String, 'String', function(iterated){
                this._t = String(iterated); // target
                this._i = 0;                // next index
// 21.1.5.2.1 %StringIteratorPrototype%.next()
            }, function(){
                var O     = this._t
                    , index = this._i
                    , point;
                if(index >= O.length)return {value: undefined, done: true};
                point = $at(O, index);
                this._i += point.length;
                return {value: point, done: false};
            });

            /***/ }),
        /* 21 */
        /***/ (function(module, exports) {

            var toString = {}.toString;

            module.exports = function(it){
                return toString.call(it).slice(8, -1);
            };

            /***/ }),
        /* 22 */
        /***/ (function(module, exports, __webpack_require__) {

// 7.1.13 ToObject(argument)
            var defined = __webpack_require__(37);
            module.exports = function(it){
                return Object(defined(it));
            };

            /***/ }),
        /* 23 */
        /***/ (function(module, exports) {

            module.exports = true;

            /***/ }),
        /* 24 */
        /***/ (function(module, exports) {

            var id = 0
                , px = Math.random();
            module.exports = function(key){
                return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
            };

            /***/ }),
        /* 25 */
        /***/ (function(module, exports, __webpack_require__) {

            var def = __webpack_require__(6).f
                , has = __webpack_require__(11)
                , TAG = __webpack_require__(1)('toStringTag');

            module.exports = function(it, tag, stat){
                if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});
            };

            /***/ }),
        /* 26 */
        /***/ (function(module, exports, __webpack_require__) {

            __webpack_require__(95);
            var global        = __webpack_require__(2)
                , hide          = __webpack_require__(10)
                , Iterators     = __webpack_require__(16)
                , TO_STRING_TAG = __webpack_require__(1)('toStringTag');

            for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){
                var NAME       = collections[i]
                    , Collection = global[NAME]
                    , proto      = Collection && Collection.prototype;
                if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);
                Iterators[NAME] = Iterators.Array;
            }

            /***/ }),
        /* 27 */
        /***/ (function(module, exports) {

            exports.f = {}.propertyIsEnumerable;

            /***/ }),
        /* 28 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            exports.__esModule = true;

            exports.default = function (instance, Constructor) {
                if (!(instance instanceof Constructor)) {
                    throw new TypeError("Cannot call a class as a function");
                }
            };

            /***/ }),
        /* 29 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            exports.__esModule = true;

            var _defineProperty = __webpack_require__(79);

            var _defineProperty2 = _interopRequireDefault(_defineProperty);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            exports.default = function () {
                function defineProperties(target, props) {
                    for (var i = 0; i < props.length; i++) {
                        var descriptor = props[i];
                        descriptor.enumerable = descriptor.enumerable || false;
                        descriptor.configurable = true;
                        if ("value" in descriptor) descriptor.writable = true;
                        (0, _defineProperty2.default)(target, descriptor.key, descriptor);
                    }
                }

                return function (Constructor, protoProps, staticProps) {
                    if (protoProps) defineProperties(Constructor.prototype, protoProps);
                    if (staticProps) defineProperties(Constructor, staticProps);
                    return Constructor;
                };
            }();

            /***/ }),
        /* 30 */
        /***/ (function(module, exports) {

            module.exports = function(it){
                if(typeof it != 'function')throw TypeError(it + ' is not a function!');
                return it;
            };

            /***/ }),
        /* 31 */
        /***/ (function(module, exports, __webpack_require__) {

            var isObject = __webpack_require__(14)
                , document = __webpack_require__(2).document
                // in old IE typeof document.createElement is 'object'
                , is = isObject(document) && isObject(document.createElement);
            module.exports = function(it){
                return is ? document.createElement(it) : {};
            };

            /***/ }),
        /* 32 */
        /***/ (function(module, exports, __webpack_require__) {

// 7.1.1 ToPrimitive(input [, PreferredType])
            var isObject = __webpack_require__(14);
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
            module.exports = function(it, S){
                if(!isObject(it))return it;
                var fn, val;
                if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
                if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;
                if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
                throw TypeError("Can't convert object to primitive value");
            };

            /***/ }),
        /* 33 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            /**
             * Copyright (c) 2013-present, Facebook, Inc.
             * All rights reserved.
             *
             * This source code is licensed under the BSD-style license found in the
             * LICENSE file in the root directory of this source tree. An additional grant
             * of patent rights can be found in the PATENTS file in the same directory.
             *
             *
             */

            function makeEmptyFunction(arg) {
                return function () {
                    return arg;
                };
            }

            /**
             * This function accepts and discards inputs; it has no side effects. This is
             * primarily useful idiomatically for overridable function endpoints which
             * always need to be callable, since JS lacks a null-call idiom ala Cocoa.
             */
            var emptyFunction = function emptyFunction() {};

            emptyFunction.thatReturns = makeEmptyFunction;
            emptyFunction.thatReturnsFalse = makeEmptyFunction(false);
            emptyFunction.thatReturnsTrue = makeEmptyFunction(true);
            emptyFunction.thatReturnsNull = makeEmptyFunction(null);
            emptyFunction.thatReturnsThis = function () {
                return this;
            };
            emptyFunction.thatReturnsArgument = function (arg) {
                return arg;
            };

            module.exports = emptyFunction;

            /***/ }),
        /* 34 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";
            /* WEBPACK VAR INJECTION */(function(process) {/**
             * Copyright (c) 2013-present, Facebook, Inc.
             * All rights reserved.
             *
             * This source code is licensed under the BSD-style license found in the
             * LICENSE file in the root directory of this source tree. An additional grant
             * of patent rights can be found in the PATENTS file in the same directory.
             *
             */



                /**
                 * Use invariant() to assert state which your program assumes to be true.
                 *
                 * Provide sprintf-style format (only %s is supported) and arguments
                 * to provide information about what broke and what you were
                 * expecting.
                 *
                 * The invariant message will be stripped in production, but the invariant
                 * will remain to ensure logic does not differ in production.
                 */

                var validateFormat = function validateFormat(format) {};

                if (process.env.NODE_ENV !== 'production') {
                    validateFormat = function validateFormat(format) {
                        if (format === undefined) {
                            throw new Error('invariant requires an error message argument');
                        }
                    };
                }

                function invariant(condition, format, a, b, c, d, e, f) {
                    validateFormat(format);

                    if (!condition) {
                        var error;
                        if (format === undefined) {
                            error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
                        } else {
                            var args = [a, b, c, d, e, f];
                            var argIndex = 0;
                            error = new Error(format.replace(/%s/g, function () {
                                return args[argIndex++];
                            }));
                            error.name = 'Invariant Violation';
                        }

                        error.framesToPop = 1; // we don't care about invariant's own frame
                        throw error;
                    }
                }

                module.exports = invariant;
                /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))

            /***/ }),
        /* 35 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";
            /**
             * Copyright 2013-present, Facebook, Inc.
             * All rights reserved.
             *
             * This source code is licensed under the BSD-style license found in the
             * LICENSE file in the root directory of this source tree. An additional grant
             * of patent rights can be found in the PATENTS file in the same directory.
             */



            var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';

            module.exports = ReactPropTypesSecret;


            /***/ }),
        /* 36 */
        /***/ (function(module, exports) {

// 7.1.4 ToInteger
            var ceil  = Math.ceil
                , floor = Math.floor;
            module.exports = function(it){
                return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
            };

            /***/ }),
        /* 37 */
        /***/ (function(module, exports) {

// 7.2.1 RequireObjectCoercible(argument)
            module.exports = function(it){
                if(it == undefined)throw TypeError("Can't call method on  " + it);
                return it;
            };

            /***/ }),
        /* 38 */
        /***/ (function(module, exports, __webpack_require__) {

// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
            var anObject    = __webpack_require__(7)
                , dPs         = __webpack_require__(92)
                , enumBugKeys = __webpack_require__(42)
                , IE_PROTO    = __webpack_require__(40)('IE_PROTO')
                , Empty       = function(){ /* empty */ }
                , PROTOTYPE   = 'prototype';

// Create object with fake `null` prototype: use iframe Object with cleared prototype
            var createDict = function(){
                // Thrash, waste and sodomy: IE GC bug
                var iframe = __webpack_require__(31)('iframe')
                    , i      = enumBugKeys.length
                    , lt     = '<'
                    , gt     = '>'
                    , iframeDocument;
                iframe.style.display = 'none';
                __webpack_require__(57).appendChild(iframe);
                iframe.src = 'javascript:'; // eslint-disable-line no-script-url
                // createDict = iframe.contentWindow.Object;
                // html.removeChild(iframe);
                iframeDocument = iframe.contentWindow.document;
                iframeDocument.open();
                iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
                iframeDocument.close();
                createDict = iframeDocument.F;
                while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];
                return createDict();
            };

            module.exports = Object.create || function create(O, Properties){
                    var result;
                    if(O !== null){
                        Empty[PROTOTYPE] = anObject(O);
                        result = new Empty;
                        Empty[PROTOTYPE] = null;
                        // add "__proto__" for Object.getPrototypeOf polyfill
                        result[IE_PROTO] = O;
                    } else result = createDict();
                    return Properties === undefined ? result : dPs(result, Properties);
                };


            /***/ }),
        /* 39 */
        /***/ (function(module, exports, __webpack_require__) {

// 7.1.15 ToLength
            var toInteger = __webpack_require__(36)
                , min       = Math.min;
            module.exports = function(it){
                return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
            };

            /***/ }),
        /* 40 */
        /***/ (function(module, exports, __webpack_require__) {

            var shared = __webpack_require__(41)('keys')
                , uid    = __webpack_require__(24);
            module.exports = function(key){
                return shared[key] || (shared[key] = uid(key));
            };

            /***/ }),
        /* 41 */
        /***/ (function(module, exports, __webpack_require__) {

            var global = __webpack_require__(2)
                , SHARED = '__core-js_shared__'
                , store  = global[SHARED] || (global[SHARED] = {});
            module.exports = function(key){
                return store[key] || (store[key] = {});
            };

            /***/ }),
        /* 42 */
        /***/ (function(module, exports) {

// IE 8- don't enum bug keys
            module.exports = (
                'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
            ).split(',');

            /***/ }),
        /* 43 */
        /***/ (function(module, exports, __webpack_require__) {

// getting tag from 19.1.3.6 Object.prototype.toString()
            var cof = __webpack_require__(21)
                , TAG = __webpack_require__(1)('toStringTag')
                // ES3 wrong here
                , ARG = cof(function(){ return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
            var tryGet = function(it, key){
                try {
                    return it[key];
                } catch(e){ /* empty */ }
            };

            module.exports = function(it){
                var O, T, B;
                return it === undefined ? 'Undefined' : it === null ? 'Null'
                    // @@toStringTag case
                    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
                        // builtinTag case
                        : ARG ? cof(O)
                            // ES3 arguments fallback
                            : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
            };

            /***/ }),
        /* 44 */
        /***/ (function(module, exports, __webpack_require__) {

            var classof   = __webpack_require__(43)
                , ITERATOR  = __webpack_require__(1)('iterator')
                , Iterators = __webpack_require__(16);
            module.exports = __webpack_require__(0).getIteratorMethod = function(it){
                if(it != undefined)return it[ITERATOR]
                    || it['@@iterator']
                    || Iterators[classof(it)];
            };

            /***/ }),
        /* 45 */
        /***/ (function(module, exports) {

            exports.f = Object.getOwnPropertySymbols;

            /***/ }),
        /* 46 */
        /***/ (function(module, exports, __webpack_require__) {

            exports.f = __webpack_require__(1);

            /***/ }),
        /* 47 */
        /***/ (function(module, exports, __webpack_require__) {

            var global         = __webpack_require__(2)
                , core           = __webpack_require__(0)
                , LIBRARY        = __webpack_require__(23)
                , wksExt         = __webpack_require__(46)
                , defineProperty = __webpack_require__(6).f;
            module.exports = function(name){
                var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
                if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)});
            };

            /***/ }),
        /* 48 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            exports.omit = omit;
            exports.arraysEqual = arraysEqual;
            var isElementAnSFC = exports.isElementAnSFC = function isElementAnSFC(element) {
                var isNativeDOMElement = typeof element.type === 'string';

                if (isNativeDOMElement) {
                    return false;
                }

                return !element.type.prototype.isReactComponent;
            };
            function omit(obj) {
                var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];

                var result = {};
                Object.keys(obj).forEach(function (key) {
                    if (attrs.indexOf(key) === -1) {
                        result[key] = obj[key];
                    }
                });
                return result;
            }

            function arraysEqual(a, b) {
                var sameObject = a === b;
                if (sameObject) {
                    return true;
                }

                var notBothArrays = !Array.isArray(a) || !Array.isArray(b);
                var differentLengths = a.length !== b.length;

                if (notBothArrays || differentLengths) {
                    return false;
                }

                return a.every(function (element, index) {
                    return element === b[index];
                });
            }

            function memoizeString(fn) {
                var cache = {};

                return function (str) {
                    if (!cache[str]) {
                        cache[str] = fn(str);
                    }
                    return cache[str];
                };
            }

            var hyphenate = exports.hyphenate = memoizeString(function (str) {
                return str.replace(/([A-Z])/g, '-$1').toLowerCase();
            });

            /***/ }),
        /* 49 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";
            /* WEBPACK VAR INJECTION */(function(process) {

                var utils = __webpack_require__(3);
                var normalizeHeaderName = __webpack_require__(161);

                var DEFAULT_CONTENT_TYPE = {
                    'Content-Type': 'application/x-www-form-urlencoded'
                };

                function setContentTypeIfUnset(headers, value) {
                    if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {
                        headers['Content-Type'] = value;
                    }
                }

                function getDefaultAdapter() {
                    var adapter;
                    if (typeof XMLHttpRequest !== 'undefined') {
                        // For browsers use XHR adapter
                        adapter = __webpack_require__(72);
                    } else if (typeof process !== 'undefined') {
                        // For node use HTTP adapter
                        adapter = __webpack_require__(72);
                    }
                    return adapter;
                }

                var defaults = {
                    adapter: getDefaultAdapter(),

                    transformRequest: [function transformRequest(data, headers) {
                        normalizeHeaderName(headers, 'Content-Type');
                        if (utils.isFormData(data) ||
                            utils.isArrayBuffer(data) ||
                            utils.isBuffer(data) ||
                            utils.isStream(data) ||
                            utils.isFile(data) ||
                            utils.isBlob(data)
                        ) {
                            return data;
                        }
                        if (utils.isArrayBufferView(data)) {
                            return data.buffer;
                        }
                        if (utils.isURLSearchParams(data)) {
                            setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
                            return data.toString();
                        }
                        if (utils.isObject(data)) {
                            setContentTypeIfUnset(headers, 'application/json;charset=utf-8');
                            return JSON.stringify(data);
                        }
                        return data;
                    }],

                    transformResponse: [function transformResponse(data) {
                        /*eslint no-param-reassign:0*/
                        if (typeof data === 'string') {
                            try {
                                data = JSON.parse(data);
                            } catch (e) { /* Ignore */ }
                        }
                        return data;
                    }],

                    timeout: 0,

                    xsrfCookieName: 'XSRF-TOKEN',
                    xsrfHeaderName: 'X-XSRF-TOKEN',

                    maxContentLength: -1,

                    validateStatus: function validateStatus(status) {
                        return status >= 200 && status < 300;
                    }
                };

                defaults.headers = {
                    common: {
                        'Accept': 'application/json, text/plain, */*'
                    }
                };

                utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {
                    defaults.headers[method] = {};
                });

                utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
                    defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);
                });

                module.exports = defaults;

                /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))

            /***/ }),
        /* 50 */
        /***/ (function(module, exports, __webpack_require__) {

            module.exports = !__webpack_require__(9) && !__webpack_require__(15)(function(){
                    return Object.defineProperty(__webpack_require__(31)('div'), 'a', {get: function(){ return 7; }}).a != 7;
                });

            /***/ }),
        /* 51 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";
            /* WEBPACK VAR INJECTION */(function(process) {/**
             * Copyright 2014-2015, Facebook, Inc.
             * All rights reserved.
             *
             * This source code is licensed under the BSD-style license found in the
             * LICENSE file in the root directory of this source tree. An additional grant
             * of patent rights can be found in the PATENTS file in the same directory.
             *
             */



            var emptyFunction = __webpack_require__(33);

                /**
                 * Similar to invariant but only logs a warning if the condition is not met.
                 * This can be used to log issues in development environments in critical
                 * paths. Removing the logging code for production environments will keep the
                 * same logic and follow the same code paths.
                 */

                var warning = emptyFunction;

                if (process.env.NODE_ENV !== 'production') {
                    (function () {
                        var printWarning = function printWarning(format) {
                            for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
                                args[_key - 1] = arguments[_key];
                            }

                            var argIndex = 0;
                            var message = 'Warning: ' + format.replace(/%s/g, function () {
                                    return args[argIndex++];
                                });
                            if (typeof console !== 'undefined') {
                                console.error(message);
                            }
                            try {
                                // --- Welcome to debugging React ---
                                // This error was thrown as a convenience so that you can use this stack
                                // to find the callsite that caused this warning to fire.
                                throw new Error(message);
                            } catch (x) {}
                        };

                        warning = function warning(condition, format) {
                            if (format === undefined) {
                                throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');
                            }

                            if (format.indexOf('Failed Composite propType: ') === 0) {
                                return; // Ignore CompositeComponent proptype check.
                            }

                            if (!condition) {
                                for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
                                    args[_key2 - 2] = arguments[_key2];
                                }

                                printWarning.apply(undefined, [format].concat(args));
                            }
                        };
                    })();
                }

                module.exports = warning;
                /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))

            /***/ }),
        /* 52 */
        /***/ (function(module, exports) {



            /***/ }),
        /* 53 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";

            var LIBRARY        = __webpack_require__(23)
                , $export        = __webpack_require__(5)
                , redefine       = __webpack_require__(54)
                , hide           = __webpack_require__(10)
                , has            = __webpack_require__(11)
                , Iterators      = __webpack_require__(16)
                , $iterCreate    = __webpack_require__(91)
                , setToStringTag = __webpack_require__(25)
                , getPrototypeOf = __webpack_require__(58)
                , ITERATOR       = __webpack_require__(1)('iterator')
                , BUGGY          = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`
                , FF_ITERATOR    = '@@iterator'
                , KEYS           = 'keys'
                , VALUES         = 'values';

            var returnThis = function(){ return this; };

            module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){
                $iterCreate(Constructor, NAME, next);
                var getMethod = function(kind){
                    if(!BUGGY && kind in proto)return proto[kind];
                    switch(kind){
                        case KEYS: return function keys(){ return new Constructor(this, kind); };
                        case VALUES: return function values(){ return new Constructor(this, kind); };
                    } return function entries(){ return new Constructor(this, kind); };
                };
                var TAG        = NAME + ' Iterator'
                    , DEF_VALUES = DEFAULT == VALUES
                    , VALUES_BUG = false
                    , proto      = Base.prototype
                    , $native    = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]
                    , $default   = $native || getMethod(DEFAULT)
                    , $entries   = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined
                    , $anyNative = NAME == 'Array' ? proto.entries || $native : $native
                    , methods, key, IteratorPrototype;
                // Fix native
                if($anyNative){
                    IteratorPrototype = getPrototypeOf($anyNative.call(new Base));
                    if(IteratorPrototype !== Object.prototype){
                        // Set @@toStringTag to native iterators
                        setToStringTag(IteratorPrototype, TAG, true);
                        // fix for some old engines
                        if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);
                    }
                }
                // fix Array#{values, @@iterator}.name in V8 / FF
                if(DEF_VALUES && $native && $native.name !== VALUES){
                    VALUES_BUG = true;
                    $default = function values(){ return $native.call(this); };
                }
                // Define iterator
                if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){
                    hide(proto, ITERATOR, $default);
                }
                // Plug for library
                Iterators[NAME] = $default;
                Iterators[TAG]  = returnThis;
                if(DEFAULT){
                    methods = {
                        values:  DEF_VALUES ? $default : getMethod(VALUES),
                        keys:    IS_SET     ? $default : getMethod(KEYS),
                        entries: $entries
                    };
                    if(FORCED)for(key in methods){
                        if(!(key in proto))redefine(proto, key, methods[key]);
                    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
                }
                return methods;
            };

            /***/ }),
        /* 54 */
        /***/ (function(module, exports, __webpack_require__) {

            module.exports = __webpack_require__(10);

            /***/ }),
        /* 55 */
        /***/ (function(module, exports, __webpack_require__) {

            var has          = __webpack_require__(11)
                , toIObject    = __webpack_require__(12)
                , arrayIndexOf = __webpack_require__(93)(false)
                , IE_PROTO     = __webpack_require__(40)('IE_PROTO');

            module.exports = function(object, names){
                var O      = toIObject(object)
                    , i      = 0
                    , result = []
                    , key;
                for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);
                // Don't enum bug & hidden keys
                while(names.length > i)if(has(O, key = names[i++])){
                    ~arrayIndexOf(result, key) || result.push(key);
                }
                return result;
            };

            /***/ }),
        /* 56 */
        /***/ (function(module, exports, __webpack_require__) {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
            var cof = __webpack_require__(21);
            module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
                return cof(it) == 'String' ? it.split('') : Object(it);
            };

            /***/ }),
        /* 57 */
        /***/ (function(module, exports, __webpack_require__) {

            module.exports = __webpack_require__(2).document && document.documentElement;

            /***/ }),
        /* 58 */
        /***/ (function(module, exports, __webpack_require__) {

// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
            var has         = __webpack_require__(11)
                , toObject    = __webpack_require__(22)
                , IE_PROTO    = __webpack_require__(40)('IE_PROTO')
                , ObjectProto = Object.prototype;

            module.exports = Object.getPrototypeOf || function(O){
                    O = toObject(O);
                    if(has(O, IE_PROTO))return O[IE_PROTO];
                    if(typeof O.constructor == 'function' && O instanceof O.constructor){
                        return O.constructor.prototype;
                    } return O instanceof Object ? ObjectProto : null;
                };

            /***/ }),
        /* 59 */
        /***/ (function(module, exports, __webpack_require__) {

// call something on iterator step with safe closing on error
            var anObject = __webpack_require__(7);
            module.exports = function(iterator, fn, value, entries){
                try {
                    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
                    // 7.4.6 IteratorClose(iterator, completion)
                } catch(e){
                    var ret = iterator['return'];
                    if(ret !== undefined)anObject(ret.call(iterator));
                    throw e;
                }
            };

            /***/ }),
        /* 60 */
        /***/ (function(module, exports, __webpack_require__) {

// check on default Array iterator
            var Iterators  = __webpack_require__(16)
                , ITERATOR   = __webpack_require__(1)('iterator')
                , ArrayProto = Array.prototype;

            module.exports = function(it){
                return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
            };

            /***/ }),
        /* 61 */
        /***/ (function(module, exports, __webpack_require__) {

            var ctx                = __webpack_require__(13)
                , invoke             = __webpack_require__(102)
                , html               = __webpack_require__(57)
                , cel                = __webpack_require__(31)
                , global             = __webpack_require__(2)
                , process            = global.process
                , setTask            = global.setImmediate
                , clearTask          = global.clearImmediate
                , MessageChannel     = global.MessageChannel
                , counter            = 0
                , queue              = {}
                , ONREADYSTATECHANGE = 'onreadystatechange'
                , defer, channel, port;
            var run = function(){
                var id = +this;
                if(queue.hasOwnProperty(id)){
                    var fn = queue[id];
                    delete queue[id];
                    fn();
                }
            };
            var listener = function(event){
                run.call(event.data);
            };
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
            if(!setTask || !clearTask){
                setTask = function setImmediate(fn){
                    var args = [], i = 1;
                    while(arguments.length > i)args.push(arguments[i++]);
                    queue[++counter] = function(){
                        invoke(typeof fn == 'function' ? fn : Function(fn), args);
                    };
                    defer(counter);
                    return counter;
                };
                clearTask = function clearImmediate(id){
                    delete queue[id];
                };
                // Node.js 0.8-
                if(__webpack_require__(21)(process) == 'process'){
                    defer = function(id){
                        process.nextTick(ctx(run, id, 1));
                    };
                    // Browsers with MessageChannel, includes WebWorkers
                } else if(MessageChannel){
                    channel = new MessageChannel;
                    port    = channel.port2;
                    channel.port1.onmessage = listener;
                    defer = ctx(port.postMessage, port, 1);
                    // Browsers with postMessage, skip WebWorkers
                    // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
                } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){
                    defer = function(id){
                        global.postMessage(id + '', '*');
                    };
                    global.addEventListener('message', listener, false);
                    // IE8-
                } else if(ONREADYSTATECHANGE in cel('script')){
                    defer = function(id){
                        html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){
                            html.removeChild(this);
                            run.call(id);
                        };
                    };
                    // Rest old browsers
                } else {
                    defer = function(id){
                        setTimeout(ctx(run, id, 1), 0);
                    };
                }
            }
            module.exports = {
                set:   setTask,
                clear: clearTask
            };

            /***/ }),
        /* 62 */
        /***/ (function(module, exports, __webpack_require__) {

            var ITERATOR     = __webpack_require__(1)('iterator')
                , SAFE_CLOSING = false;

            try {
                var riter = [7][ITERATOR]();
                riter['return'] = function(){ SAFE_CLOSING = true; };
                Array.from(riter, function(){ throw 2; });
            } catch(e){ /* empty */ }

            module.exports = function(exec, skipClosing){
                if(!skipClosing && !SAFE_CLOSING)return false;
                var safe = false;
                try {
                    var arr  = [7]
                        , iter = arr[ITERATOR]();
                    iter.next = function(){ return {done: safe = true}; };
                    arr[ITERATOR] = function(){ return iter; };
                    exec(arr);
                } catch(e){ /* empty */ }
                return safe;
            };

            /***/ }),
        /* 63 */
        /***/ (function(module, exports, __webpack_require__) {

            module.exports = { "default": __webpack_require__(110), __esModule: true };

            /***/ }),
        /* 64 */
        /***/ (function(module, exports, __webpack_require__) {

// most Object methods by ES6 should accept primitives
            var $export = __webpack_require__(5)
                , core    = __webpack_require__(0)
                , fails   = __webpack_require__(15);
            module.exports = function(KEY, exec){
                var fn  = (core.Object || {})[KEY] || Object[KEY]
                    , exp = {};
                exp[KEY] = exec(fn);
                $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);
            };

            /***/ }),
        /* 65 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            exports.__esModule = true;

            var _typeof2 = __webpack_require__(66);

            var _typeof3 = _interopRequireDefault(_typeof2);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            exports.default = function (self, call) {
                if (!self) {
                    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                }

                return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self;
            };

            /***/ }),
        /* 66 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            exports.__esModule = true;

            var _iterator = __webpack_require__(112);

            var _iterator2 = _interopRequireDefault(_iterator);

            var _symbol = __webpack_require__(114);

            var _symbol2 = _interopRequireDefault(_symbol);

            var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {
                return typeof obj === "undefined" ? "undefined" : _typeof(obj);
            } : function (obj) {
                return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);
            };

            /***/ }),
        /* 67 */
        /***/ (function(module, exports, __webpack_require__) {

// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
            var $keys      = __webpack_require__(55)
                , hiddenKeys = __webpack_require__(42).concat('length', 'prototype');

            exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){
                    return $keys(O, hiddenKeys);
                };

            /***/ }),
        /* 68 */
        /***/ (function(module, exports, __webpack_require__) {

            var pIE            = __webpack_require__(27)
                , createDesc     = __webpack_require__(19)
                , toIObject      = __webpack_require__(12)
                , toPrimitive    = __webpack_require__(32)
                , has            = __webpack_require__(11)
                , IE8_DOM_DEFINE = __webpack_require__(50)
                , gOPD           = Object.getOwnPropertyDescriptor;

            exports.f = __webpack_require__(9) ? gOPD : function getOwnPropertyDescriptor(O, P){
                O = toIObject(O);
                P = toPrimitive(P, true);
                if(IE8_DOM_DEFINE)try {
                    return gOPD(O, P);
                } catch(e){ /* empty */ }
                if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);
            };

            /***/ }),
        /* 69 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            exports.__esModule = true;

            var _setPrototypeOf = __webpack_require__(124);

            var _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);

            var _create = __webpack_require__(128);

            var _create2 = _interopRequireDefault(_create);

            var _typeof2 = __webpack_require__(66);

            var _typeof3 = _interopRequireDefault(_typeof2);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            exports.default = function (subClass, superClass) {
                if (typeof superClass !== "function" && superClass !== null) {
                    throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass)));
                }

                subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {
                    constructor: {
                        value: subClass,
                        enumerable: false,
                        writable: true,
                        configurable: true
                    }
                });
                if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;
            };

            /***/ }),
        /* 70 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            exports.hasClassInParent = exports.formatErrorMsg = exports.getMetaContent = exports.axiosGithub = exports.axiosJSON = exports.queryStringify = exports.queryParse = undefined;

            var _keys = __webpack_require__(147);

            var _keys2 = _interopRequireDefault(_keys);

            var _slicedToArray2 = __webpack_require__(150);

            var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);

            var _axios = __webpack_require__(157);

            var _axios2 = _interopRequireDefault(_axios);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            var queryParse = exports.queryParse = function queryParse() {
                var search = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.location.search;

                if (!search) return {};
                var queryString = search[0] === '?' ? search.substring(1) : search;
                var query = {};
                queryString.split('&').forEach(function (queryStr) {
                    var _queryStr$split = queryStr.split('='),
                        _queryStr$split2 = (0, _slicedToArray3.default)(_queryStr$split, 2),
                        key = _queryStr$split2[0],
                        value = _queryStr$split2[1];
                    /* istanbul ignore else */


                    if (key) query[decodeURIComponent(key)] = decodeURIComponent(value);
                });

                return query;
            };

            var queryStringify = exports.queryStringify = function queryStringify(query) {
                var queryString = (0, _keys2.default)(query).map(function (key) {
                    return key + '=' + encodeURIComponent(query[key] || '');
                }).join('&');
                return queryString;
            };

            var axiosJSON = exports.axiosJSON = _axios2.default.create({
                headers: {
                    'Accept': 'application/json'
                }
            });

            var axiosGithub = exports.axiosGithub = _axios2.default.create({
                baseURL: 'https://api.github.com',
                headers: {
                    'Accept': 'application/json'
                }
            });

            var getMetaContent = exports.getMetaContent = function getMetaContent(name, content) {
                /* istanbul ignore next */
                content || (content = 'content');
                /* istanbul ignore next */
                var el = document.querySelector('meta[name=\'' + name + '\']');
                /* istanbul ignore next */
                return el && el.getAttribute(content);
            };

            var formatErrorMsg = exports.formatErrorMsg = function formatErrorMsg(err) {
                var msg = 'Error: ';
                if (err.response && err.response.data && err.response.data.message) {
                    msg += err.response.data.message + '. ';
                    err.response.data.errors && (msg += err.response.data.errors.map(function (e) {
                        return e.message;
                    }).join(', '));
                } else {
                    msg += err.message;
                }
                return msg;
            };

            var hasClassInParent = exports.hasClassInParent = function hasClassInParent(element) {
                for (var _len = arguments.length, className = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
                    className[_key - 1] = arguments[_key];
                }

                /* istanbul ignore next */
                var yes = false;
                /* istanbul ignore next */
                if (typeof element.className === 'undefined') return false;
                /* istanbul ignore next */
                var classes = element.className.split(' ');
                /* istanbul ignore next */
                className.forEach(function (c, i) {
                    /* istanbul ignore next */
                    yes = yes || classes.indexOf(c) >= 0;
                });
                /* istanbul ignore next */
                if (yes) return yes;
                /* istanbul ignore next */
                return element.parentNode && hasClassInParent(element.parentNode, className);
            };

            /***/ }),
        /* 71 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            module.exports = function bind(fn, thisArg) {
                return function wrap() {
                    var args = new Array(arguments.length);
                    for (var i = 0; i < args.length; i++) {
                        args[i] = arguments[i];
                    }
                    return fn.apply(thisArg, args);
                };
            };


            /***/ }),
        /* 72 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";
            /* WEBPACK VAR INJECTION */(function(process) {

                var utils = __webpack_require__(3);
                var settle = __webpack_require__(162);
                var buildURL = __webpack_require__(164);
                var parseHeaders = __webpack_require__(165);
                var isURLSameOrigin = __webpack_require__(166);
                var createError = __webpack_require__(73);
                var btoa = (typeof window !== 'undefined' && window.btoa && window.btoa.bind(window)) || __webpack_require__(167);

                module.exports = function xhrAdapter(config) {
                    return new Promise(function dispatchXhrRequest(resolve, reject) {
                        var requestData = config.data;
                        var requestHeaders = config.headers;

                        if (utils.isFormData(requestData)) {
                            delete requestHeaders['Content-Type']; // Let the browser set it
                        }

                        var request = new XMLHttpRequest();
                        var loadEvent = 'onreadystatechange';
                        var xDomain = false;

                        // For IE 8/9 CORS support
                        // Only supports POST and GET calls and doesn't returns the response headers.
                        // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.
                        if (process.env.NODE_ENV !== 'test' &&
                            typeof window !== 'undefined' &&
                            window.XDomainRequest && !('withCredentials' in request) &&
                            !isURLSameOrigin(config.url)) {
                            request = new window.XDomainRequest();
                            loadEvent = 'onload';
                            xDomain = true;
                            request.onprogress = function handleProgress() {};
                            request.ontimeout = function handleTimeout() {};
                        }

                        // HTTP basic authentication
                        if (config.auth) {
                            var username = config.auth.username || '';
                            var password = config.auth.password || '';
                            requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);
                        }

                        request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);

                        // Set the request timeout in MS
                        request.timeout = config.timeout;

                        // Listen for ready state
                        request[loadEvent] = function handleLoad() {
                            if (!request || (request.readyState !== 4 && !xDomain)) {
                                return;
                            }

                            // The request errored out and we didn't get a response, this will be
                            // handled by onerror instead
                            // With one exception: request that using file: protocol, most browsers
                            // will return status as 0 even though it's a successful request
                            if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
                                return;
                            }

                            // Prepare the response
                            var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
                            var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;
                            var response = {
                                data: responseData,
                                // IE sends 1223 instead of 204 (https://github.com/mzabriskie/axios/issues/201)
                                status: request.status === 1223 ? 204 : request.status,
                                statusText: request.status === 1223 ? 'No Content' : request.statusText,
                                headers: responseHeaders,
                                config: config,
                                request: request
                            };

                            settle(resolve, reject, response);

                            // Clean up request
                            request = null;
                        };

                        // Handle low level network errors
                        request.onerror = function handleError() {
                            // Real errors are hidden from us by the browser
                            // onerror should only fire if it's a network error
                            reject(createError('Network Error', config, null, request));

                            // Clean up request
                            request = null;
                        };

                        // Handle timeout
                        request.ontimeout = function handleTimeout() {
                            reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',
                                request));

                            // Clean up request
                            request = null;
                        };

                        // Add xsrf header
                        // This is only done if running in a standard browser environment.
                        // Specifically not if we're in a web worker, or react-native.
                        if (utils.isStandardBrowserEnv()) {
                            var cookies = __webpack_require__(168);

                            // Add xsrf header
                            var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?
                                cookies.read(config.xsrfCookieName) :
                                undefined;

                            if (xsrfValue) {
                                requestHeaders[config.xsrfHeaderName] = xsrfValue;
                            }
                        }

                        // Add headers to the request
                        if ('setRequestHeader' in request) {
                            utils.forEach(requestHeaders, function setRequestHeader(val, key) {
                                if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {
                                    // Remove Content-Type if data is undefined
                                    delete requestHeaders[key];
                                } else {
                                    // Otherwise add header to the request
                                    request.setRequestHeader(key, val);
                                }
                            });
                        }

                        // Add withCredentials to request if needed
                        if (config.withCredentials) {
                            request.withCredentials = true;
                        }

                        // Add responseType to request if needed
                        if (config.responseType) {
                            try {
                                request.responseType = config.responseType;
                            } catch (e) {
                                // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.
                                // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.
                                if (config.responseType !== 'json') {
                                    throw e;
                                }
                            }
                        }

                        // Handle progress if needed
                        if (typeof config.onDownloadProgress === 'function') {
                            request.addEventListener('progress', config.onDownloadProgress);
                        }

                        // Not all browsers support upload events
                        if (typeof config.onUploadProgress === 'function' && request.upload) {
                            request.upload.addEventListener('progress', config.onUploadProgress);
                        }

                        if (config.cancelToken) {
                            // Handle cancellation
                            config.cancelToken.promise.then(function onCanceled(cancel) {
                                if (!request) {
                                    return;
                                }

                                request.abort();
                                reject(cancel);
                                // Clean up request
                                request = null;
                            });
                        }

                        if (requestData === undefined) {
                            requestData = null;
                        }

                        // Send the request
                        request.send(requestData);
                    });
                };

                /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))

            /***/ }),
        /* 73 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            var enhanceError = __webpack_require__(163);

            /**
             * Create an Error with the specified message, config, error code, request and response.
             *
             * @param {string} message The error message.
             * @param {Object} config The config.
             * @param {string} [code] The error code (for example, 'ECONNABORTED').
             * @param {Object} [request] The request.
             * @param {Object} [response] The response.
             * @returns {Error} The created error.
             */
            module.exports = function createError(message, config, code, request, response) {
                var error = new Error(message);
                return enhanceError(error, config, code, request, response);
            };


            /***/ }),
        /* 74 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            module.exports = function isCancel(value) {
                return !!(value && value.__CANCEL__);
            };


            /***/ }),
        /* 75 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            /**
             * A `Cancel` is an object that is thrown when an operation is canceled.
             *
             * @class
             * @param {string=} message The message.
             */
            function Cancel(message) {
                this.message = message;
            }

            Cancel.prototype.toString = function toString() {
                return 'Cancel' + (this.message ? ': ' + this.message : '');
            };

            Cancel.prototype.__CANCEL__ = true;

            module.exports = Cancel;


            /***/ }),
        /* 76 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            exports.default = Avatar;

            var _react = __webpack_require__(4);

            var _react2 = _interopRequireDefault(_react);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            function Avatar(props) {
                var src = props.src;
                var className = 'gt-avatar ';
                props.className && (className += props.className);
                return _react2.default.createElement(
                    'div',
                    { className: className },
                    _react2.default.createElement('img', { src: src, alt: '\u5934\u50CF' })
                );
            }

            /***/ }),
        /* 77 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            exports.default = Svg;

            var _react = __webpack_require__(4);

            var _react2 = _interopRequireDefault(_react);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            function Svg(props) {
                var className = 'gt-ico ';
                props.className && (className += props.className);
                return _react2.default.createElement(
                    'span',
                    { className: className },
                    _react2.default.createElement('span', { className: 'gt-svg', dangerouslySetInnerHTML: {
                        __html: __webpack_require__(179)("./" + props.name + '.svg')
                    } }),
                    props.text && _react2.default.createElement(
                        'span',
                        { className: 'gt-ico-text' },
                        props.text
                    )
                );
            }

            /***/ }),
        /* 78 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            var _classCallCheck2 = __webpack_require__(28);

            var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);

            var _createClass2 = __webpack_require__(29);

            var _createClass3 = _interopRequireDefault(_createClass2);

            var _react = __webpack_require__(4);

            var _react2 = _interopRequireDefault(_react);

            var _reactDom = __webpack_require__(4);

            var _gitalk = __webpack_require__(87);

            var _gitalk2 = _interopRequireDefault(_gitalk);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            var Gitalk = function () {
                function Gitalk() {
                    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
                    (0, _classCallCheck3.default)(this, Gitalk);

                    this.options = options;
                }

                (0, _createClass3.default)(Gitalk, [{
                    key: 'render',
                    value: function render(container) {
                        var node = null;
                        container = container || this.options.container;

                        if (!container) throw new Error('Container is required: ' + container);

                        if (!(container instanceof HTMLElement)) {
                            node = document.getElementById(container);
                            if (!node) throw new Error('Container not found, document.getElementById: ' + container);
                        } else {
                            node = container;
                        }

                        return (0, _reactDom.render)(_react2.default.createElement(_gitalk2.default, { options: this.options }), node);
                    }
                }]);
                return Gitalk;
            }();

            module.exports = Gitalk;

            /***/ }),
        /* 79 */
        /***/ (function(module, exports, __webpack_require__) {

            module.exports = { "default": __webpack_require__(80), __esModule: true };

            /***/ }),
        /* 80 */
        /***/ (function(module, exports, __webpack_require__) {

            __webpack_require__(81);
            var $Object = __webpack_require__(0).Object;
            module.exports = function defineProperty(it, key, desc){
                return $Object.defineProperty(it, key, desc);
            };

            /***/ }),
        /* 81 */
        /***/ (function(module, exports, __webpack_require__) {

            var $export = __webpack_require__(5);
// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
            $export($export.S + $export.F * !__webpack_require__(9), 'Object', {defineProperty: __webpack_require__(6).f});

            /***/ }),
        /* 82 */
        /***/ (function(module, exports, __webpack_require__) {

            /* WEBPACK VAR INJECTION */(function(process) {/**
             * Copyright 2013-present, Facebook, Inc.
             * All rights reserved.
             *
             * This source code is licensed under the BSD-style license found in the
             * LICENSE file in the root directory of this source tree. An additional grant
             * of patent rights can be found in the PATENTS file in the same directory.
             */

                if (process.env.NODE_ENV !== 'production') {
                    var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&
                        Symbol.for &&
                        Symbol.for('react.element')) ||
                        0xeac7;

                    var isValidElement = function(object) {
                        return typeof object === 'object' &&
                            object !== null &&
                            object.$$typeof === REACT_ELEMENT_TYPE;
                    };

                    // By explicitly using `prop-types` you are opting into new development behavior.
                    // http://fb.me/prop-types-in-prod
                    var throwOnDirectAccess = true;
                    module.exports = __webpack_require__(83)(isValidElement, throwOnDirectAccess);
                } else {
                    // By explicitly using `prop-types` you are opting into new production behavior.
                    // http://fb.me/prop-types-in-prod
                    module.exports = __webpack_require__(85)();
                }

                /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))

            /***/ }),
        /* 83 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";
            /* WEBPACK VAR INJECTION */(function(process) {/**
             * Copyright 2013-present, Facebook, Inc.
             * All rights reserved.
             *
             * This source code is licensed under the BSD-style license found in the
             * LICENSE file in the root directory of this source tree. An additional grant
             * of patent rights can be found in the PATENTS file in the same directory.
             */



            var emptyFunction = __webpack_require__(33);
                var invariant = __webpack_require__(34);
                var warning = __webpack_require__(51);

                var ReactPropTypesSecret = __webpack_require__(35);
                var checkPropTypes = __webpack_require__(84);

                module.exports = function(isValidElement, throwOnDirectAccess) {
                    /* global Symbol */
                    var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
                    var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.

                    /**
                     * Returns the iterator method function contained on the iterable object.
                     *
                     * Be sure to invoke the function with the iterable as context:
                     *
                     *     var iteratorFn = getIteratorFn(myIterable);
                     *     if (iteratorFn) {
   *       var iterator = iteratorFn.call(myIterable);
   *       ...
   *     }
                     *
                     * @param {?object} maybeIterable
                     * @return {?function}
                     */
                    function getIteratorFn(maybeIterable) {
                        var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
                        if (typeof iteratorFn === 'function') {
                            return iteratorFn;
                        }
                    }

                    /**
                     * Collection of methods that allow declaration and validation of props that are
                     * supplied to React components. Example usage:
                     *
                     *   var Props = require('ReactPropTypes');
                     *   var MyArticle = React.createClass({
   *     propTypes: {
   *       // An optional string prop named "description".
   *       description: Props.string,
   *
   *       // A required enum prop named "category".
   *       category: Props.oneOf(['News','Photos']).isRequired,
   *
   *       // A prop named "dialog" that requires an instance of Dialog.
   *       dialog: Props.instanceOf(Dialog).isRequired
   *     },
   *     render: function() { ... }
   *   });
                     *
                     * A more formal specification of how these methods are used:
                     *
                     *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
                     *   decl := ReactPropTypes.{type}(.isRequired)?
                     *
                     * Each and every declaration produces a function with the same signature. This
                     * allows the creation of custom validation functions. For example:
                     *
                     *  var MyLink = React.createClass({
   *    propTypes: {
   *      // An optional string or URI prop named "href".
   *      href: function(props, propName, componentName) {
   *        var propValue = props[propName];
   *        if (propValue != null && typeof propValue !== 'string' &&
   *            !(propValue instanceof URI)) {
   *          return new Error(
   *            'Expected a string or an URI for ' + propName + ' in ' +
   *            componentName
   *          );
   *        }
   *      }
   *    },
   *    render: function() {...}
   *  });
                     *
                     * @internal
                     */

                    var ANONYMOUS = '<<anonymous>>';

                    // Important!
                    // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
                    var ReactPropTypes = {
                        array: createPrimitiveTypeChecker('array'),
                        bool: createPrimitiveTypeChecker('boolean'),
                        func: createPrimitiveTypeChecker('function'),
                        number: createPrimitiveTypeChecker('number'),
                        object: createPrimitiveTypeChecker('object'),
                        string: createPrimitiveTypeChecker('string'),
                        symbol: createPrimitiveTypeChecker('symbol'),

                        any: createAnyTypeChecker(),
                        arrayOf: createArrayOfTypeChecker,
                        element: createElementTypeChecker(),
                        instanceOf: createInstanceTypeChecker,
                        node: createNodeChecker(),
                        objectOf: createObjectOfTypeChecker,
                        oneOf: createEnumTypeChecker,
                        oneOfType: createUnionTypeChecker,
                        shape: createShapeTypeChecker
                    };

                    /**
                     * inlined Object.is polyfill to avoid requiring consumers ship their own
                     * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
                     */
                    /*eslint-disable no-self-compare*/
                    function is(x, y) {
                        // SameValue algorithm
                        if (x === y) {
                            // Steps 1-5, 7-10
                            // Steps 6.b-6.e: +0 != -0
                            return x !== 0 || 1 / x === 1 / y;
                        } else {
                            // Step 6.a: NaN == NaN
                            return x !== x && y !== y;
                        }
                    }
                    /*eslint-enable no-self-compare*/

                    /**
                     * We use an Error-like object for backward compatibility as people may call
                     * PropTypes directly and inspect their output. However, we don't use real
                     * Errors anymore. We don't inspect their stack anyway, and creating them
                     * is prohibitively expensive if they are created too often, such as what
                     * happens in oneOfType() for any type before the one that matched.
                     */
                    function PropTypeError(message) {
                        this.message = message;
                        this.stack = '';
                    }
                    // Make `instanceof Error` still work for returned errors.
                    PropTypeError.prototype = Error.prototype;

                    function createChainableTypeChecker(validate) {
                        if (process.env.NODE_ENV !== 'production') {
                            var manualPropTypeCallCache = {};
                            var manualPropTypeWarningCount = 0;
                        }
                        function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
                            componentName = componentName || ANONYMOUS;
                            propFullName = propFullName || propName;

                            if (secret !== ReactPropTypesSecret) {
                                if (throwOnDirectAccess) {
                                    // New behavior only for users of `prop-types` package
                                    invariant(
                                        false,
                                        'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
                                        'Use `PropTypes.checkPropTypes()` to call them. ' +
                                        'Read more at http://fb.me/use-check-prop-types'
                                    );
                                } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {
                                    // Old behavior for people using React.PropTypes
                                    var cacheKey = componentName + ':' + propName;
                                    if (
                                        !manualPropTypeCallCache[cacheKey] &&
                                        // Avoid spamming the console because they are often not actionable except for lib authors
                                        manualPropTypeWarningCount < 3
                                    ) {
                                        warning(
                                            false,
                                            'You are manually calling a React.PropTypes validation ' +
                                            'function for the `%s` prop on `%s`. This is deprecated ' +
                                            'and will throw in the standalone `prop-types` package. ' +
                                            'You may be seeing this warning due to a third-party PropTypes ' +
                                            'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',
                                            propFullName,
                                            componentName
                                        );
                                        manualPropTypeCallCache[cacheKey] = true;
                                        manualPropTypeWarningCount++;
                                    }
                                }
                            }
                            if (props[propName] == null) {
                                if (isRequired) {
                                    if (props[propName] === null) {
                                        return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
                                    }
                                    return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
                                }
                                return null;
                            } else {
                                return validate(props, propName, componentName, location, propFullName);
                            }
                        }

                        var chainedCheckType = checkType.bind(null, false);
                        chainedCheckType.isRequired = checkType.bind(null, true);

                        return chainedCheckType;
                    }

                    function createPrimitiveTypeChecker(expectedType) {
                        function validate(props, propName, componentName, location, propFullName, secret) {
                            var propValue = props[propName];
                            var propType = getPropType(propValue);
                            if (propType !== expectedType) {
                                // `propValue` being instance of, say, date/regexp, pass the 'object'
                                // check, but we can offer a more precise error message here rather than
                                // 'of type `object`'.
                                var preciseType = getPreciseType(propValue);

                                return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
                            }
                            return null;
                        }
                        return createChainableTypeChecker(validate);
                    }

                    function createAnyTypeChecker() {
                        return createChainableTypeChecker(emptyFunction.thatReturnsNull);
                    }

                    function createArrayOfTypeChecker(typeChecker) {
                        function validate(props, propName, componentName, location, propFullName) {
                            if (typeof typeChecker !== 'function') {
                                return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
                            }
                            var propValue = props[propName];
                            if (!Array.isArray(propValue)) {
                                var propType = getPropType(propValue);
                                return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
                            }
                            for (var i = 0; i < propValue.length; i++) {
                                var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
                                if (error instanceof Error) {
                                    return error;
                                }
                            }
                            return null;
                        }
                        return createChainableTypeChecker(validate);
                    }

                    function createElementTypeChecker() {
                        function validate(props, propName, componentName, location, propFullName) {
                            var propValue = props[propName];
                            if (!isValidElement(propValue)) {
                                var propType = getPropType(propValue);
                                return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
                            }
                            return null;
                        }
                        return createChainableTypeChecker(validate);
                    }

                    function createInstanceTypeChecker(expectedClass) {
                        function validate(props, propName, componentName, location, propFullName) {
                            if (!(props[propName] instanceof expectedClass)) {
                                var expectedClassName = expectedClass.name || ANONYMOUS;
                                var actualClassName = getClassName(props[propName]);
                                return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
                            }
                            return null;
                        }
                        return createChainableTypeChecker(validate);
                    }

                    function createEnumTypeChecker(expectedValues) {
                        if (!Array.isArray(expectedValues)) {
                            process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;
                            return emptyFunction.thatReturnsNull;
                        }

                        function validate(props, propName, componentName, location, propFullName) {
                            var propValue = props[propName];
                            for (var i = 0; i < expectedValues.length; i++) {
                                if (is(propValue, expectedValues[i])) {
                                    return null;
                                }
                            }

                            var valuesString = JSON.stringify(expectedValues);
                            return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
                        }
                        return createChainableTypeChecker(validate);
                    }

                    function createObjectOfTypeChecker(typeChecker) {
                        function validate(props, propName, componentName, location, propFullName) {
                            if (typeof typeChecker !== 'function') {
                                return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
                            }
                            var propValue = props[propName];
                            var propType = getPropType(propValue);
                            if (propType !== 'object') {
                                return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
                            }
                            for (var key in propValue) {
                                if (propValue.hasOwnProperty(key)) {
                                    var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
                                    if (error instanceof Error) {
                                        return error;
                                    }
                                }
                            }
                            return null;
                        }
                        return createChainableTypeChecker(validate);
                    }

                    function createUnionTypeChecker(arrayOfTypeCheckers) {
                        if (!Array.isArray(arrayOfTypeCheckers)) {
                            process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;
                            return emptyFunction.thatReturnsNull;
                        }

                        for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
                            var checker = arrayOfTypeCheckers[i];
                            if (typeof checker !== 'function') {
                                warning(
                                    false,
                                    'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' +
                                    'received %s at index %s.',
                                    getPostfixForTypeWarning(checker),
                                    i
                                );
                                return emptyFunction.thatReturnsNull;
                            }
                        }

                        function validate(props, propName, componentName, location, propFullName) {
                            for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
                                var checker = arrayOfTypeCheckers[i];
                                if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
                                    return null;
                                }
                            }

                            return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
                        }
                        return createChainableTypeChecker(validate);
                    }

                    function createNodeChecker() {
                        function validate(props, propName, componentName, location, propFullName) {
                            if (!isNode(props[propName])) {
                                return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
                            }
                            return null;
                        }
                        return createChainableTypeChecker(validate);
                    }

                    function createShapeTypeChecker(shapeTypes) {
                        function validate(props, propName, componentName, location, propFullName) {
                            var propValue = props[propName];
                            var propType = getPropType(propValue);
                            if (propType !== 'object') {
                                return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
                            }
                            for (var key in shapeTypes) {
                                var checker = shapeTypes[key];
                                if (!checker) {
                                    continue;
                                }
                                var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
                                if (error) {
                                    return error;
                                }
                            }
                            return null;
                        }
                        return createChainableTypeChecker(validate);
                    }

                    function isNode(propValue) {
                        switch (typeof propValue) {
                            case 'number':
                            case 'string':
                            case 'undefined':
                                return true;
                            case 'boolean':
                                return !propValue;
                            case 'object':
                                if (Array.isArray(propValue)) {
                                    return propValue.every(isNode);
                                }
                                if (propValue === null || isValidElement(propValue)) {
                                    return true;
                                }

                                var iteratorFn = getIteratorFn(propValue);
                                if (iteratorFn) {
                                    var iterator = iteratorFn.call(propValue);
                                    var step;
                                    if (iteratorFn !== propValue.entries) {
                                        while (!(step = iterator.next()).done) {
                                            if (!isNode(step.value)) {
                                                return false;
                                            }
                                        }
                                    } else {
                                        // Iterator will provide entry [k,v] tuples rather than values.
                                        while (!(step = iterator.next()).done) {
                                            var entry = step.value;
                                            if (entry) {
                                                if (!isNode(entry[1])) {
                                                    return false;
                                                }
                                            }
                                        }
                                    }
                                } else {
                                    return false;
                                }

                                return true;
                            default:
                                return false;
                        }
                    }

                    function isSymbol(propType, propValue) {
                        // Native Symbol.
                        if (propType === 'symbol') {
                            return true;
                        }

                        // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
                        if (propValue['@@toStringTag'] === 'Symbol') {
                            return true;
                        }

                        // Fallback for non-spec compliant Symbols which are polyfilled.
                        if (typeof Symbol === 'function' && propValue instanceof Symbol) {
                            return true;
                        }

                        return false;
                    }

                    // Equivalent of `typeof` but with special handling for array and regexp.
                    function getPropType(propValue) {
                        var propType = typeof propValue;
                        if (Array.isArray(propValue)) {
                            return 'array';
                        }
                        if (propValue instanceof RegExp) {
                            // Old webkits (at least until Android 4.0) return 'function' rather than
                            // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
                            // passes PropTypes.object.
                            return 'object';
                        }
                        if (isSymbol(propType, propValue)) {
                            return 'symbol';
                        }
                        return propType;
                    }

                    // This handles more types than `getPropType`. Only used for error messages.
                    // See `createPrimitiveTypeChecker`.
                    function getPreciseType(propValue) {
                        if (typeof propValue === 'undefined' || propValue === null) {
                            return '' + propValue;
                        }
                        var propType = getPropType(propValue);
                        if (propType === 'object') {
                            if (propValue instanceof Date) {
                                return 'date';
                            } else if (propValue instanceof RegExp) {
                                return 'regexp';
                            }
                        }
                        return propType;
                    }

                    // Returns a string that is postfixed to a warning about an invalid type.
                    // For example, "undefined" or "of type array"
                    function getPostfixForTypeWarning(value) {
                        var type = getPreciseType(value);
                        switch (type) {
                            case 'array':
                            case 'object':
                                return 'an ' + type;
                            case 'boolean':
                            case 'date':
                            case 'regexp':
                                return 'a ' + type;
                            default:
                                return type;
                        }
                    }

                    // Returns class name of the object, if any.
                    function getClassName(propValue) {
                        if (!propValue.constructor || !propValue.constructor.name) {
                            return ANONYMOUS;
                        }
                        return propValue.constructor.name;
                    }

                    ReactPropTypes.checkPropTypes = checkPropTypes;
                    ReactPropTypes.PropTypes = ReactPropTypes;

                    return ReactPropTypes;
                };

                /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))

            /***/ }),
        /* 84 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";
            /* WEBPACK VAR INJECTION */(function(process) {/**
             * Copyright 2013-present, Facebook, Inc.
             * All rights reserved.
             *
             * This source code is licensed under the BSD-style license found in the
             * LICENSE file in the root directory of this source tree. An additional grant
             * of patent rights can be found in the PATENTS file in the same directory.
             */



                if (process.env.NODE_ENV !== 'production') {
                    var invariant = __webpack_require__(34);
                    var warning = __webpack_require__(51);
                    var ReactPropTypesSecret = __webpack_require__(35);
                    var loggedTypeFailures = {};
                }

                /**
                 * Assert that the values match with the type specs.
                 * Error messages are memorized and will only be shown once.
                 *
                 * @param {object} typeSpecs Map of name to a ReactPropType
                 * @param {object} values Runtime values that need to be type-checked
                 * @param {string} location e.g. "prop", "context", "child context"
                 * @param {string} componentName Name of the component for error messages.
                 * @param {?Function} getStack Returns the component stack.
                 * @private
                 */
                function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
                    if (process.env.NODE_ENV !== 'production') {
                        for (var typeSpecName in typeSpecs) {
                            if (typeSpecs.hasOwnProperty(typeSpecName)) {
                                var error;
                                // Prop type validation may throw. In case they do, we don't want to
                                // fail the render phase where it didn't fail before. So we log it.
                                // After these have been cleaned up, we'll let them throw.
                                try {
                                    // This is intentionally an invariant that gets caught. It's the same
                                    // behavior as without this statement except with a better message.
                                    invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);
                                    error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
                                } catch (ex) {
                                    error = ex;
                                }
                                warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);
                                if (error instanceof Error && !(error.message in loggedTypeFailures)) {
                                    // Only monitor this failure once because there tends to be a lot of the
                                    // same error.
                                    loggedTypeFailures[error.message] = true;

                                    var stack = getStack ? getStack() : '';

                                    warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');
                                }
                            }
                        }
                    }
                }

                module.exports = checkPropTypes;

                /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))

            /***/ }),
        /* 85 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";
            /**
             * Copyright 2013-present, Facebook, Inc.
             * All rights reserved.
             *
             * This source code is licensed under the BSD-style license found in the
             * LICENSE file in the root directory of this source tree. An additional grant
             * of patent rights can be found in the PATENTS file in the same directory.
             */



            var emptyFunction = __webpack_require__(33);
            var invariant = __webpack_require__(34);
            var ReactPropTypesSecret = __webpack_require__(35);

            module.exports = function() {
                function shim(props, propName, componentName, location, propFullName, secret) {
                    if (secret === ReactPropTypesSecret) {
                        // It is still safe when called from React.
                        return;
                    }
                    invariant(
                        false,
                        'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
                        'Use PropTypes.checkPropTypes() to call them. ' +
                        'Read more at http://fb.me/use-check-prop-types'
                    );
                };
                shim.isRequired = shim;
                function getShim() {
                    return shim;
                };
                // Important!
                // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
                var ReactPropTypes = {
                    array: shim,
                    bool: shim,
                    func: shim,
                    number: shim,
                    object: shim,
                    string: shim,
                    symbol: shim,

                    any: shim,
                    arrayOf: getShim,
                    element: shim,
                    instanceOf: getShim,
                    node: shim,
                    objectOf: getShim,
                    oneOf: getShim,
                    oneOfType: getShim,
                    shape: getShim
                };

                ReactPropTypes.checkPropTypes = emptyFunction;
                ReactPropTypes.PropTypes = ReactPropTypes;

                return ReactPropTypes;
            };


            /***/ }),
        /* 86 */
        /***/ (function(module, exports, __webpack_require__) {

            !function() {
                'use strict';
                function VNode() {}
                function h(nodeName, attributes) {
                    var lastSimple, child, simple, i, children = EMPTY_CHILDREN;
                    for (i = arguments.length; i-- > 2; ) stack.push(arguments[i]);
                    if (attributes && null != attributes.children) {
                        if (!stack.length) stack.push(attributes.children);
                        delete attributes.children;
                    }
                    while (stack.length) if ((child = stack.pop()) && void 0 !== child.pop) for (i = child.length; i--; ) stack.push(child[i]); else {
                        if (child === !0 || child === !1) child = null;
                        if (simple = 'function' != typeof nodeName) if (null == child) child = ''; else if ('number' == typeof child) child = String(child); else if ('string' != typeof child) simple = !1;
                        if (simple && lastSimple) children[children.length - 1] += child; else if (children === EMPTY_CHILDREN) children = [ child ]; else children.push(child);
                        lastSimple = simple;
                    }
                    var p = new VNode();
                    p.nodeName = nodeName;
                    p.children = children;
                    p.attributes = null == attributes ? void 0 : attributes;
                    p.key = null == attributes ? void 0 : attributes.key;
                    if (void 0 !== options.vnode) options.vnode(p);
                    return p;
                }
                function extend(obj, props) {
                    for (var i in props) obj[i] = props[i];
                    return obj;
                }
                function cloneElement(vnode, props) {
                    return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);
                }
                function enqueueRender(component) {
                    if (!component.__d && (component.__d = !0) && 1 == items.push(component)) (options.debounceRendering || setTimeout)(rerender);
                }
                function rerender() {
                    var p, list = items;
                    items = [];
                    while (p = list.pop()) if (p.__d) renderComponent(p);
                }
                function isSameNodeType(node, vnode, hydrating) {
                    if ('string' == typeof vnode || 'number' == typeof vnode) return void 0 !== node.splitText;
                    if ('string' == typeof vnode.nodeName) return !node._componentConstructor && isNamedNode(node, vnode.nodeName); else return hydrating || node._componentConstructor === vnode.nodeName;
                }
                function isNamedNode(node, nodeName) {
                    return node.__n === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();
                }
                function getNodeProps(vnode) {
                    var props = extend({}, vnode.attributes);
                    props.children = vnode.children;
                    var defaultProps = vnode.nodeName.defaultProps;
                    if (void 0 !== defaultProps) for (var i in defaultProps) if (void 0 === props[i]) props[i] = defaultProps[i];
                    return props;
                }
                function createNode(nodeName, isSvg) {
                    var node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);
                    node.__n = nodeName;
                    return node;
                }
                function removeNode(node) {
                    if (node.parentNode) node.parentNode.removeChild(node);
                }
                function setAccessor(node, name, old, value, isSvg) {
                    if ('className' === name) name = 'class';
                    if ('key' === name) ; else if ('ref' === name) {
                        if (old) old(null);
                        if (value) value(node);
                    } else if ('class' === name && !isSvg) node.className = value || ''; else if ('style' === name) {
                        if (!value || 'string' == typeof value || 'string' == typeof old) node.style.cssText = value || '';
                        if (value && 'object' == typeof value) {
                            if ('string' != typeof old) for (var i in old) if (!(i in value)) node.style[i] = '';
                            for (var i in value) node.style[i] = 'number' == typeof value[i] && IS_NON_DIMENSIONAL.test(i) === !1 ? value[i] + 'px' : value[i];
                        }
                    } else if ('dangerouslySetInnerHTML' === name) {
                        if (value) node.innerHTML = value.__html || '';
                    } else if ('o' == name[0] && 'n' == name[1]) {
                        var useCapture = name !== (name = name.replace(/Capture$/, ''));
                        name = name.toLowerCase().substring(2);
                        if (value) {
                            if (!old) node.addEventListener(name, eventProxy, useCapture);
                        } else node.removeEventListener(name, eventProxy, useCapture);
                        (node.__l || (node.__l = {}))[name] = value;
                    } else if ('list' !== name && 'type' !== name && !isSvg && name in node) {
                        setProperty(node, name, null == value ? '' : value);
                        if (null == value || value === !1) node.removeAttribute(name);
                    } else {
                        var ns = isSvg && name !== (name = name.replace(/^xlink\:?/, ''));
                        if (null == value || value === !1) if (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase()); else node.removeAttribute(name); else if ('function' != typeof value) if (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value); else node.setAttribute(name, value);
                    }
                }
                function setProperty(node, name, value) {
                    try {
                        node[name] = value;
                    } catch (e) {}
                }
                function eventProxy(e) {
                    return this.__l[e.type](options.event && options.event(e) || e);
                }
                function flushMounts() {
                    var c;
                    while (c = mounts.pop()) {
                        if (options.afterMount) options.afterMount(c);
                        if (c.componentDidMount) c.componentDidMount();
                    }
                }
                function diff(dom, vnode, context, mountAll, parent, componentRoot) {
                    if (!diffLevel++) {
                        isSvgMode = null != parent && void 0 !== parent.ownerSVGElement;
                        hydrating = null != dom && !('__preactattr_' in dom);
                    }
                    var ret = idiff(dom, vnode, context, mountAll, componentRoot);
                    if (parent && ret.parentNode !== parent) parent.appendChild(ret);
                    if (!--diffLevel) {
                        hydrating = !1;
                        if (!componentRoot) flushMounts();
                    }
                    return ret;
                }
                function idiff(dom, vnode, context, mountAll, componentRoot) {
                    var out = dom, prevSvgMode = isSvgMode;
                    if (null == vnode) vnode = '';
                    if ('string' == typeof vnode) {
                        if (dom && void 0 !== dom.splitText && dom.parentNode && (!dom._component || componentRoot)) {
                            if (dom.nodeValue != vnode) dom.nodeValue = vnode;
                        } else {
                            out = document.createTextNode(vnode);
                            if (dom) {
                                if (dom.parentNode) dom.parentNode.replaceChild(out, dom);
                                recollectNodeTree(dom, !0);
                            }
                        }
                        out.__preactattr_ = !0;
                        return out;
                    }
                    if ('function' == typeof vnode.nodeName) return buildComponentFromVNode(dom, vnode, context, mountAll);
                    isSvgMode = 'svg' === vnode.nodeName ? !0 : 'foreignObject' === vnode.nodeName ? !1 : isSvgMode;
                    if (!dom || !isNamedNode(dom, String(vnode.nodeName))) {
                        out = createNode(String(vnode.nodeName), isSvgMode);
                        if (dom) {
                            while (dom.firstChild) out.appendChild(dom.firstChild);
                            if (dom.parentNode) dom.parentNode.replaceChild(out, dom);
                            recollectNodeTree(dom, !0);
                        }
                    }
                    var fc = out.firstChild, props = out.__preactattr_ || (out.__preactattr_ = {}), vchildren = vnode.children;
                    if (!hydrating && vchildren && 1 === vchildren.length && 'string' == typeof vchildren[0] && null != fc && void 0 !== fc.splitText && null == fc.nextSibling) {
                        if (fc.nodeValue != vchildren[0]) fc.nodeValue = vchildren[0];
                    } else if (vchildren && vchildren.length || null != fc) innerDiffNode(out, vchildren, context, mountAll, hydrating || null != props.dangerouslySetInnerHTML);
                    diffAttributes(out, vnode.attributes, props);
                    isSvgMode = prevSvgMode;
                    return out;
                }
                function innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {
                    var j, c, vchild, child, originalChildren = dom.childNodes, children = [], keyed = {}, keyedLen = 0, min = 0, len = originalChildren.length, childrenLen = 0, vlen = vchildren ? vchildren.length : 0;
                    if (0 !== len) for (var i = 0; i < len; i++) {
                        var _child = originalChildren[i], props = _child.__preactattr_, key = vlen && props ? _child._component ? _child._component.__k : props.key : null;
                        if (null != key) {
                            keyedLen++;
                            keyed[key] = _child;
                        } else if (props || (void 0 !== _child.splitText ? isHydrating ? _child.nodeValue.trim() : !0 : isHydrating)) children[childrenLen++] = _child;
                    }
                    if (0 !== vlen) for (var i = 0; i < vlen; i++) {
                        vchild = vchildren[i];
                        child = null;
                        var key = vchild.key;
                        if (null != key) {
                            if (keyedLen && void 0 !== keyed[key]) {
                                child = keyed[key];
                                keyed[key] = void 0;
                                keyedLen--;
                            }
                        } else if (!child && min < childrenLen) for (j = min; j < childrenLen; j++) if (void 0 !== children[j] && isSameNodeType(c = children[j], vchild, isHydrating)) {
                            child = c;
                            children[j] = void 0;
                            if (j === childrenLen - 1) childrenLen--;
                            if (j === min) min++;
                            break;
                        }
                        child = idiff(child, vchild, context, mountAll);
                        if (child && child !== dom) if (i >= len) dom.appendChild(child); else if (child !== originalChildren[i]) if (child === originalChildren[i + 1]) removeNode(originalChildren[i]); else dom.insertBefore(child, originalChildren[i] || null);
                    }
                    if (keyedLen) for (var i in keyed) if (void 0 !== keyed[i]) recollectNodeTree(keyed[i], !1);
                    while (min <= childrenLen) if (void 0 !== (child = children[childrenLen--])) recollectNodeTree(child, !1);
                }
                function recollectNodeTree(node, unmountOnly) {
                    var component = node._component;
                    if (component) unmountComponent(component); else {
                        if (null != node.__preactattr_ && node.__preactattr_.ref) node.__preactattr_.ref(null);
                        if (unmountOnly === !1 || null == node.__preactattr_) removeNode(node);
                        removeChildren(node);
                    }
                }
                function removeChildren(node) {
                    node = node.lastChild;
                    while (node) {
                        var next = node.previousSibling;
                        recollectNodeTree(node, !0);
                        node = next;
                    }
                }
                function diffAttributes(dom, attrs, old) {
                    var name;
                    for (name in old) if ((!attrs || null == attrs[name]) && null != old[name]) setAccessor(dom, name, old[name], old[name] = void 0, isSvgMode);
                    for (name in attrs) if (!('children' === name || 'innerHTML' === name || name in old && attrs[name] === ('value' === name || 'checked' === name ? dom[name] : old[name]))) setAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);
                }
                function collectComponent(component) {
                    var name = component.constructor.name;
                    (components[name] || (components[name] = [])).push(component);
                }
                function createComponent(Ctor, props, context) {
                    var inst, list = components[Ctor.name];
                    if (Ctor.prototype && Ctor.prototype.render) {
                        inst = new Ctor(props, context);
                        Component.call(inst, props, context);
                    } else {
                        inst = new Component(props, context);
                        inst.constructor = Ctor;
                        inst.render = doRender;
                    }
                    if (list) for (var i = list.length; i--; ) if (list[i].constructor === Ctor) {
                        inst.__b = list[i].__b;
                        list.splice(i, 1);
                        break;
                    }
                    return inst;
                }
                function doRender(props, state, context) {
                    return this.constructor(props, context);
                }
                function setComponentProps(component, props, opts, context, mountAll) {
                    if (!component.__x) {
                        component.__x = !0;
                        if (component.__r = props.ref) delete props.ref;
                        if (component.__k = props.key) delete props.key;
                        if (!component.base || mountAll) {
                            if (component.componentWillMount) component.componentWillMount();
                        } else if (component.componentWillReceiveProps) component.componentWillReceiveProps(props, context);
                        if (context && context !== component.context) {
                            if (!component.__c) component.__c = component.context;
                            component.context = context;
                        }
                        if (!component.__p) component.__p = component.props;
                        component.props = props;
                        component.__x = !1;
                        if (0 !== opts) if (1 === opts || options.syncComponentUpdates !== !1 || !component.base) renderComponent(component, 1, mountAll); else enqueueRender(component);
                        if (component.__r) component.__r(component);
                    }
                }
                function renderComponent(component, opts, mountAll, isChild) {
                    if (!component.__x) {
                        var rendered, inst, cbase, props = component.props, state = component.state, context = component.context, previousProps = component.__p || props, previousState = component.__s || state, previousContext = component.__c || context, isUpdate = component.base, nextBase = component.__b, initialBase = isUpdate || nextBase, initialChildComponent = component._component, skip = !1;
                        if (isUpdate) {
                            component.props = previousProps;
                            component.state = previousState;
                            component.context = previousContext;
                            if (2 !== opts && component.shouldComponentUpdate && component.shouldComponentUpdate(props, state, context) === !1) skip = !0; else if (component.componentWillUpdate) component.componentWillUpdate(props, state, context);
                            component.props = props;
                            component.state = state;
                            component.context = context;
                        }
                        component.__p = component.__s = component.__c = component.__b = null;
                        component.__d = !1;
                        if (!skip) {
                            rendered = component.render(props, state, context);
                            if (component.getChildContext) context = extend(extend({}, context), component.getChildContext());
                            var toUnmount, base, childComponent = rendered && rendered.nodeName;
                            if ('function' == typeof childComponent) {
                                var childProps = getNodeProps(rendered);
                                inst = initialChildComponent;
                                if (inst && inst.constructor === childComponent && childProps.key == inst.__k) setComponentProps(inst, childProps, 1, context, !1); else {
                                    toUnmount = inst;
                                    component._component = inst = createComponent(childComponent, childProps, context);
                                    inst.__b = inst.__b || nextBase;
                                    inst.__u = component;
                                    setComponentProps(inst, childProps, 0, context, !1);
                                    renderComponent(inst, 1, mountAll, !0);
                                }
                                base = inst.base;
                            } else {
                                cbase = initialBase;
                                toUnmount = initialChildComponent;
                                if (toUnmount) cbase = component._component = null;
                                if (initialBase || 1 === opts) {
                                    if (cbase) cbase._component = null;
                                    base = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, !0);
                                }
                            }
                            if (initialBase && base !== initialBase && inst !== initialChildComponent) {
                                var baseParent = initialBase.parentNode;
                                if (baseParent && base !== baseParent) {
                                    baseParent.replaceChild(base, initialBase);
                                    if (!toUnmount) {
                                        initialBase._component = null;
                                        recollectNodeTree(initialBase, !1);
                                    }
                                }
                            }
                            if (toUnmount) unmountComponent(toUnmount);
                            component.base = base;
                            if (base && !isChild) {
                                var componentRef = component, t = component;
                                while (t = t.__u) (componentRef = t).base = base;
                                base._component = componentRef;
                                base._componentConstructor = componentRef.constructor;
                            }
                        }
                        if (!isUpdate || mountAll) mounts.unshift(component); else if (!skip) {
                            flushMounts();
                            if (component.componentDidUpdate) component.componentDidUpdate(previousProps, previousState, previousContext);
                            if (options.afterUpdate) options.afterUpdate(component);
                        }
                        if (null != component.__h) while (component.__h.length) component.__h.pop().call(component);
                        if (!diffLevel && !isChild) flushMounts();
                    }
                }
                function buildComponentFromVNode(dom, vnode, context, mountAll) {
                    var c = dom && dom._component, originalComponent = c, oldDom = dom, isDirectOwner = c && dom._componentConstructor === vnode.nodeName, isOwner = isDirectOwner, props = getNodeProps(vnode);
                    while (c && !isOwner && (c = c.__u)) isOwner = c.constructor === vnode.nodeName;
                    if (c && isOwner && (!mountAll || c._component)) {
                        setComponentProps(c, props, 3, context, mountAll);
                        dom = c.base;
                    } else {
                        if (originalComponent && !isDirectOwner) {
                            unmountComponent(originalComponent);
                            dom = oldDom = null;
                        }
                        c = createComponent(vnode.nodeName, props, context);
                        if (dom && !c.__b) {
                            c.__b = dom;
                            oldDom = null;
                        }
                        setComponentProps(c, props, 1, context, mountAll);
                        dom = c.base;
                        if (oldDom && dom !== oldDom) {
                            oldDom._component = null;
                            recollectNodeTree(oldDom, !1);
                        }
                    }
                    return dom;
                }
                function unmountComponent(component) {
                    if (options.beforeUnmount) options.beforeUnmount(component);
                    var base = component.base;
                    component.__x = !0;
                    if (component.componentWillUnmount) component.componentWillUnmount();
                    component.base = null;
                    var inner = component._component;
                    if (inner) unmountComponent(inner); else if (base) {
                        if (base.__preactattr_ && base.__preactattr_.ref) base.__preactattr_.ref(null);
                        component.__b = base;
                        removeNode(base);
                        collectComponent(component);
                        removeChildren(base);
                    }
                    if (component.__r) component.__r(null);
                }
                function Component(props, context) {
                    this.__d = !0;
                    this.context = context;
                    this.props = props;
                    this.state = this.state || {};
                }
                function render(vnode, parent, merge) {
                    return diff(merge, vnode, {}, !1, parent, !1);
                }
                var options = {};
                var stack = [];
                var EMPTY_CHILDREN = [];
                var IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;
                var items = [];
                var mounts = [];
                var diffLevel = 0;
                var isSvgMode = !1;
                var hydrating = !1;
                var components = {};
                extend(Component.prototype, {
                    setState: function(state, callback) {
                        var s = this.state;
                        if (!this.__s) this.__s = extend({}, s);
                        extend(s, 'function' == typeof state ? state(s, this.props) : state);
                        if (callback) (this.__h = this.__h || []).push(callback);
                        enqueueRender(this);
                    },
                    forceUpdate: function(callback) {
                        if (callback) (this.__h = this.__h || []).push(callback);
                        renderComponent(this, 2);
                    },
                    render: function() {}
                });
                var preact = {
                    h: h,
                    createElement: h,
                    cloneElement: cloneElement,
                    Component: Component,
                    render: render,
                    rerender: rerender,
                    options: options
                };
                if (true) module.exports = preact; else self.preact = preact;
            }();
//# sourceMappingURL=preact.js.map

            /***/ }),
        /* 87 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            var _promise = __webpack_require__(88);

            var _promise2 = _interopRequireDefault(_promise);

            var _assign = __webpack_require__(106);

            var _assign2 = _interopRequireDefault(_assign);

            var _getPrototypeOf = __webpack_require__(63);

            var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);

            var _classCallCheck2 = __webpack_require__(28);

            var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);

            var _createClass2 = __webpack_require__(29);

            var _createClass3 = _interopRequireDefault(_createClass2);

            var _possibleConstructorReturn2 = __webpack_require__(65);

            var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);

            var _inherits2 = __webpack_require__(69);

            var _inherits3 = _interopRequireDefault(_inherits2);

            var _react = __webpack_require__(4);

            var _react2 = _interopRequireDefault(_react);

            var _reactFlipMove = __webpack_require__(131);

            var _reactFlipMove2 = _interopRequireDefault(_reactFlipMove);

            var _autosize = __webpack_require__(138);

            var _autosize2 = _interopRequireDefault(_autosize);

            var _i18n = __webpack_require__(139);

            var _i18n2 = _interopRequireDefault(_i18n);

            __webpack_require__(146);

            var _util = __webpack_require__(70);

            var _avatar = __webpack_require__(76);

            var _avatar2 = _interopRequireDefault(_avatar);

            var _button = __webpack_require__(176);

            var _button2 = _interopRequireDefault(_button);

            var _action = __webpack_require__(177);

            var _action2 = _interopRequireDefault(_action);

            var _comment = __webpack_require__(178);

            var _comment2 = _interopRequireDefault(_comment);

            var _svg = __webpack_require__(77);

            var _svg2 = _interopRequireDefault(_svg);

            var _const = __webpack_require__(203);

            var _getComments = __webpack_require__(204);

            var _getComments2 = _interopRequireDefault(_getComments);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            var GitalkComponent = function (_Component) {
                (0, _inherits3.default)(GitalkComponent, _Component);

                function GitalkComponent(props) {
                    (0, _classCallCheck3.default)(this, GitalkComponent);

                    var _this = (0, _possibleConstructorReturn3.default)(this, (GitalkComponent.__proto__ || (0, _getPrototypeOf2.default)(GitalkComponent)).call(this, props));

                    _this.state = {
                        user: null,
                        issue: null,
                        comments: [],
                        localComments: [],
                        comment: '',
                        page: 1,
                        pagerDirection: 'last',
                        cursor: null,

                        isNoInit: false,
                        isIniting: true,
                        isCreating: false,
                        isLoading: false,
                        isLoadMore: false,
                        isLoadOver: false,
                        isIssueCreating: false,
                        isPopupVisible: false,
                        isInputFocused: false,

                        isOccurError: false,
                        errorMsg: ''
                    };

                    _this.getCommentsV3 = function (issue) {
                        var _this$options = _this.options,
                            clientID = _this$options.clientID,
                            clientSecret = _this$options.clientSecret,
                            perPage = _this$options.perPage;
                        var page = _this.state.page;

                        return _this.getIssue().then(function (issue) {
                            if (!issue) return;

                            return _util.axiosGithub.get(issue.comments_url, {
                                headers: {
                                    Accept: 'application/vnd.github.v3.full+json'
                                },
                                params: {
                                    client_id: clientID,
                                    client_secret: clientSecret,
                                    per_page: perPage,
                                    page: page
                                }
                            }).then(function (res) {
                                var _this$state = _this.state,
                                    comments = _this$state.comments,
                                    issue = _this$state.issue;

                                var isLoadOver = false;
                                var cs = comments.concat(res.data);
                                if (cs.length >= issue.comments || res.data.length < perPage) {
                                    isLoadOver = true;
                                }
                                _this.setState({
                                    comments: cs,
                                    isLoadOver: isLoadOver,
                                    page: page + 1
                                });
                                return cs;
                            });
                        });
                    };

                    _this.getRef = function (e) {
                        _this.publicBtnEL = e;
                    };

                    _this.handlePopup = function (e) {
                        e.preventDefault();
                        e.stopPropagation();
                        var isVisible = !_this.state.isPopupVisible;
                        var hideHandle = function hideHandle(e1) {
                            if ((0, _util.hasClassInParent)(e1.target, 'gt-user', 'gt-popup')) {
                                return;
                            }
                            document.removeEventListener('click', hideHandle);
                            _this.setState({ isPopupVisible: false });
                        };
                        _this.setState({ isPopupVisible: isVisible });
                        if (isVisible) {
                            document.addEventListener('click', hideHandle);
                        } else {
                            document.removeEventListener('click', hideHandle);
                        }
                    };

                    _this.handleLogin = function () {
                        var comment = _this.state.comment;

                        localStorage.setItem(_const.GT_COMMENT, encodeURIComponent(comment));
                        location.href = _this.loginLink;
                    };

                    _this.handleIssueCreate = function () {
                        _this.setState({ isIssueCreating: true });
                        _this.createIssue().then(function (issue) {
                            _this.setState({
                                isIssueCreating: false,
                                isOccurError: false
                            });
                            return _this.getComments(issue);
                        }).catch(function (err) {
                            _this.setState({
                                isIssueCreating: false,
                                isOccurError: true,
                                errorMsg: (0, _util.formatErrorMsg)(err)
                            });
                        });
                    };

                    _this.handleCommentCreate = function (e) {
                        if (!_this.state.comment.length) {
                            e && e.preventDefault();
                            _this.commentEL.focus();
                            return;
                        }
                        _this.setState({ isCreating: true });
                        _this.createComment().then(function () {
                            return _this.setState({
                                isCreating: false,
                                isOccurError: false
                            });
                        }).catch(function (err) {
                            _this.setState({
                                isCreating: false,
                                isOccurError: true,
                                errorMsg: (0, _util.formatErrorMsg)(err)
                            });
                        });
                    };

                    _this.handleCommentLoad = function () {
                        var _this$state2 = _this.state,
                            issue = _this$state2.issue,
                            isLoadMore = _this$state2.isLoadMore;

                        if (isLoadMore) return;
                        _this.setState({ isLoadMore: true });
                        _this.getComments(issue).then(function () {
                            return _this.setState({ isLoadMore: false });
                        });
                    };

                    _this.handleCommentChange = function (e) {
                        return _this.setState({ comment: e.target.value });
                    };

                    _this.handleLogout = function () {
                        _this.logout();
                        location.reload();
                    };

                    _this.handleCommentFocus = function (e) {
                        var distractionFreeMode = _this.options.distractionFreeMode;

                        if (!distractionFreeMode) return e.preventDefault();
                        _this.setState({ isInputFocused: true });
                    };

                    _this.handleCommentBlur = function (e) {
                        var distractionFreeMode = _this.options.distractionFreeMode;

                        if (!distractionFreeMode) return e.preventDefault();
                        _this.setState({ isInputFocused: false });
                    };

                    _this.handleSort = function (direction) {
                        return function (e) {
                            _this.setState({ pagerDirection: direction });
                        };
                    };

                    _this.handleCommentKeyDown = function (e) {
                        var enableHotKey = _this.options.enableHotKey;

                        if (enableHotKey && (e.metaKey || e.ctrlKey) && e.keyCode === 13) {
                            _this.publicBtnEL && _this.publicBtnEL.focus();
                            _this.handleCommentCreate();
                        }
                    };

                    _this.options = (0, _assign2.default)({}, {
                        id: location.href,
                        labels: ['Gitalk'],
                        title: document.title,
                        body: '', // location.href + header.meta[description]
                        language: navigator.language || navigator.userLanguage,
                        perPage: 10,
                        pagerDirection: 'last', // last or first
                        createIssueManually: false,
                        distractionFreeMode: false,
                        proxy: 'https://cors-anywhere.herokuapp.com/https://github.com/login/oauth/access_token',
                        flipMoveOptions: {
                            staggerDelayBy: 150,
                            appearAnimation: 'accordionVertical',
                            enterAnimation: 'accordionVertical',
                            leaveAnimation: 'accordionVertical'
                        },
                        enableHotKey: true,

                        url: location.href
                    }, props.options);

                    _this.state.pagerDirection = _this.options.pagerDirection;
                    var storedComment = localStorage.getItem(_const.GT_COMMENT);
                    if (storedComment) {
                        _this.state.comment = decodeURIComponent(storedComment);
                        localStorage.removeItem(_const.GT_COMMENT);
                    }

                    var query = (0, _util.queryParse)();
                    if (query.code) {
                        var code = query.code;
                        delete query.code;
                        var replacedUrl = '' + location.origin + location.pathname + (0, _util.queryStringify)(query) + location.hash;
                        history.replaceState(null, null, replacedUrl);
                        _this.options = (0, _assign2.default)({}, _this.options, {
                            url: replacedUrl,
                            id: replacedUrl
                        }, props.options);

                        _util.axiosJSON.post(_this.options.proxy, {
                            code: code,
                            client_id: _this.options.clientID,
                            client_secret: _this.options.clientSecret
                        }).then(function (res) {
                            if (res.data && res.data.access_token) {
                                _this.accessToken = res.data.access_token;

                                _this.getInit().then(function () {
                                    return _this.setState({ isIniting: false });
                                }).catch(function (err) {
                                    console.log('err:', err);
                                    _this.setState({
                                        isIniting: false,
                                        isOccurError: true,
                                        errorMsg: (0, _util.formatErrorMsg)(err)
                                    });
                                });
                            } else {
                                // no access_token
                                console.log('res.data err:', res.data);
                                _this.setState({
                                    isOccurError: true,
                                    errorMsg: (0, _util.formatErrorMsg)(new Error('no access token'))
                                });
                            }
                        }).catch(function (err) {
                            console.log('err: ', err);
                            _this.setState({
                                isOccurError: true,
                                errorMsg: (0, _util.formatErrorMsg)(err)
                            });
                        });
                    } else {
                        _this.getInit().then(function () {
                            return _this.setState({ isIniting: false });
                        }).catch(function (err) {
                            console.log('err:', err);
                            _this.setState({
                                isIniting: false,
                                isOccurError: true,
                                errorMsg: (0, _util.formatErrorMsg)(err)
                            });
                        });
                    }

                    _this.i18n = (0, _i18n2.default)(_this.options.language);
                    return _this;
                }

                (0, _createClass3.default)(GitalkComponent, [{
                    key: 'componentDidUpdate',
                    value: function componentDidUpdate() {
                        this.commentEL && (0, _autosize2.default)(this.commentEL);
                    }
                }, {
                    key: 'getInit',
                    value: function getInit() {
                        var _this2 = this;

                        return this.getUserInfo().then(function () {
                            return _this2.getIssue();
                        }).then(function (issue) {
                            return _this2.getComments(issue);
                        });
                    }
                }, {
                    key: 'getUserInfo',
                    value: function getUserInfo() {
                        var _this3 = this;

                        return _util.axiosGithub.get('/user', {
                            headers: {
                                Authorization: 'token ' + this.accessToken
                            }
                        }).then(function (res) {
                            _this3.setState({ user: res.data });
                        }).catch(function (err) {
                            _this3.logout();
                        });
                    }
                }, {
                    key: 'getIssue',
                    value: function getIssue() {
                        var _this4 = this;

                        var issue = this.state.issue;

                        if (issue) {
                            this.setState({ isNoInit: false });
                            return _promise2.default.resolve(issue);
                        }

                        var _options = this.options,
                            owner = _options.owner,
                            repo = _options.repo,
                            id = _options.id,
                            labels = _options.labels,
                            clientID = _options.clientID,
                            clientSecret = _options.clientSecret;


                        return _util.axiosGithub.get('/repos/' + owner + '/' + repo + '/issues', {
                            params: {
                                client_id: clientID,
                                client_secret: clientSecret,
                                labels: labels.concat(id).join(','),
                                t: Date.now()
                            }
                        }).then(function (res) {

                            function sleep(numberMillis) {
                                var now = new Date();
                                var exitTime = now.getTime() + numberMillis;
                                while (true) {
                                    now = new Date();
                                    if (now.getTime() > exitTime)
                                        return;
                                }
                            }

                            var _options2 = _this4.options,
                                admin = _options2.admin,
                                createIssueManually = _options2.createIssueManually;
                            var user = _this4.state.user;

                            var isNoInit = false;
                            var issue = null;
                            if (!(res && res.data && res.data.length)) {
                                if (!createIssueManually && user && ~admin.indexOf(user.login)) {
                                    if (typeof $.cookie(_this4.options.id) == 'undefined') { //如果第一次发起创建请求
                                        var date = new Date();
                                        date.setTime(date.getTime()+30*1000);//过期时间60s
                                        $.cookie(_this4.options.id,'1',  { expires: date, path: '/' }); //保存一天记录
                                        return _this4.createIssue();
                                    } else {
                                        sleep(3000);
                                        return _this4.getIssue();
                                    }
                                }

                                isNoInit = true;
                            } else {
                                issue = res.data[0];
                            }
                            _this4.setState({ issue: issue, isNoInit: isNoInit });
                            return issue;
                        });
                    }
                }, {
                    key: 'createIssue',
                    value: function createIssue() {
                        var _this5 = this;

                        var _options3 = this.options,
                            owner = _options3.owner,
                            repo = _options3.repo,
                            title = _options3.title,
                            body = _options3.body,
                            id = _options3.id,
                            labels = _options3.labels,
                            url = _options3.url;

                        return _util.axiosGithub.post('/repos/' + owner + '/' + repo + '/issues', {
                            title: title,
                            labels: labels.concat(id),
                            body: body || url + ' \n\n ' + (title || (0, _util.getMetaContent)('description') || (0, _util.getMetaContent)('description', 'og:description') || '')
                        }, {
                            headers: {
                                Authorization: 'token ' + this.accessToken
                            }
                        }).then(function (res) {
                            _this5.setState({ issue: res.data });
                            return res.data;
                        });
                    }
                    // Get comments via v3 api, don't require login, but sorting feature is disable

                }, {
                    key: 'getComments',
                    value: function getComments(issue) {
                        if (!issue) return;
                        // Get comments via v4 graphql api, login required and sorting feature is available
                        if (this.accessToken) return _getComments2.default.call(this, issue);
                        return this.getCommentsV3(issue);
                    }
                }, {
                    key: 'createComment',
                    value: function createComment() {
                        var _this6 = this;

                        var _state = this.state,
                            comment = _state.comment,
                            localComments = _state.localComments;


                        return this.getIssue().then(function (issue) {
                            return _util.axiosGithub.post(issue.comments_url, {
                                body: comment
                            }, {
                                headers: {
                                    Accept: 'application/vnd.github.v3.full+json',
                                    Authorization: 'token ' + _this6.accessToken
                                }
                            });
                        }).then(function (res) {
                            _this6.setState({
                                comment: '',
                                localComments: localComments.concat(res.data)
                            });
                        });
                    }
                }, {
                    key: 'logout',
                    value: function logout() {
                        this.setState({ user: null });
                        localStorage.removeItem(_const.GT_ACCESS_TOKEN);
                    }
                }, {
                    key: 'reply',
                    value: function reply(replyComment) {
                        var _this7 = this;

                        var comment = this.state.comment;

                        var replyCommentBody = replyComment.body;
                        var replyCommentArray = replyCommentBody.split('\n');
                        replyCommentArray.unshift('@' + replyComment.user.login);
                        replyCommentArray = replyCommentArray.map(function (t) {
                            return '> ' + t;
                        });
                        replyCommentArray.push('');
                        replyCommentArray.push('');
                        if (comment) replyCommentArray.unshift('');
                        this.setState({ comment: comment + replyCommentArray.join('\n') }, function () {
                            _autosize2.default.update(_this7.commentEL);
                            _this7.commentEL.focus();
                        });
                    }
                }, {
                    key: 'initing',
                    value: function initing() {
                        return _react2.default.createElement(
                            'div',
                            { className: 'gt-initing' },
                            _react2.default.createElement('i', { className: 'gt-loader' }),
                            _react2.default.createElement(
                                'p',
                                { className: 'gt-initing-text' },
                                this.i18n.t('init')
                            )
                        );
                    }
                }, {
                    key: 'noInit',
                    value: function noInit() {
                        var _state2 = this.state,
                            user = _state2.user,
                            isIssueCreating = _state2.isIssueCreating;
                        var _options4 = this.options,
                            owner = _options4.owner,
                            repo = _options4.repo,
                            admin = _options4.admin;

                        return _react2.default.createElement(
                            'div',
                            { className: 'gt-no-init', key: 'no-init' },
                            _react2.default.createElement('p', { dangerouslySetInnerHTML: {
                                __html: this.i18n.t('no-found-related', {
                                    link: '<a href="https://github.com/' + owner + '/' + repo + '/issues">Issues</a>'
                                })
                            } }),
                            _react2.default.createElement(
                                'p',
                                null,
                                this.i18n.t('please-contact', { user: [].concat(admin).map(function (u) {
                                    return '@' + u;
                                }).join(' ') })
                            ),
                            user && ~[].concat(admin).indexOf(user.login) ? _react2.default.createElement(
                                'p',
                                null,
                                _react2.default.createElement(_button2.default, { onClick: this.handleIssueCreate, isLoading: isIssueCreating, text: this.i18n.t('init-issue') })
                            ) : null,
                            !user && _react2.default.createElement(_button2.default, { className: 'gt-btn-login', onClick: this.handleLogin, text: this.i18n.t('login-with-github') })
                        );
                    }
                }, {
                    key: 'header',
                    value: function header() {
                        var _this8 = this;

                        var _state3 = this.state,
                            user = _state3.user,
                            comment = _state3.comment,
                            isCreating = _state3.isCreating;

                        return _react2.default.createElement(
                            'div',
                            { className: 'gt-header', key: 'header' },
                            user ? _react2.default.createElement(_avatar2.default, { className: 'gt-header-avatar', src: user.avatar_url }) : _react2.default.createElement(
                                'a',
                                { className: 'gt-avatar-github', onMouseDown: this.handleLogin },
                                _react2.default.createElement(_svg2.default, { className: 'gt-ico-github', name: 'github' })
                            ),
                            _react2.default.createElement(
                                'div',
                                { className: 'gt-header-comment' },
                                _react2.default.createElement('textarea', {
                                    ref: function ref(t) {
                                        _this8.commentEL = t;
                                    },
                                    className: 'gt-header-textarea',
                                    value: comment,
                                    onChange: this.handleCommentChange,
                                    onFocus: this.handleCommentFocus,
                                    onBlur: this.handleCommentBlur,
                                    onKeyDown: this.handleCommentKeyDown,
                                    placeholder: this.i18n.t('leave-a-comment')
                                }),
                                _react2.default.createElement(
                                    'div',
                                    { className: 'gt-header-controls' },
                                    _react2.default.createElement(
                                        'a',
                                        { className: 'gt-header-controls-tip', href: 'https://guides.github.com/features/mastering-markdown/', target: '_blank' },
                                        _react2.default.createElement(_svg2.default, { className: 'gt-ico-tip', name: 'tip', text: this.i18n.t('support-markdown') })
                                    ),
                                    user && _react2.default.createElement(_button2.default, {
                                        getRef: this.getRef,
                                        className: 'gt-btn-public',
                                        onMouseDown: this.handleCommentCreate,
                                        text: this.i18n.t('comment'),
                                        isLoading: isCreating
                                    }),
                                    !user && _react2.default.createElement(_button2.default, { className: 'gt-btn-login', onMouseDown: this.handleLogin, text: this.i18n.t('login-with-github') })
                                )
                            )
                        );
                    }
                }, {
                    key: 'comments',
                    value: function comments() {
                        var _this9 = this;

                        var _state4 = this.state,
                            user = _state4.user,
                            comments = _state4.comments,
                            localComments = _state4.localComments,
                            isLoadOver = _state4.isLoadOver,
                            isLoadMore = _state4.isLoadMore,
                            pagerDirection = _state4.pagerDirection;
                        var _options5 = this.options,
                            language = _options5.language,
                            flipMoveOptions = _options5.flipMoveOptions,
                            admin = _options5.admin;

                        var totalComments = comments.concat(localComments);
                        if (pagerDirection === 'last' && this.accessToken) {
                            totalComments.reverse();
                        }
                        return _react2.default.createElement(
                            'div',
                            { className: 'gt-comments', key: 'comments' },
                            _react2.default.createElement(
                                _reactFlipMove2.default,
                                flipMoveOptions,
                                totalComments.map(function (c) {
                                    return _react2.default.createElement(_comment2.default, {
                                        comment: c,
                                        key: c.id,
                                        user: user,
                                        language: language,
                                        commentedText: _this9.i18n.t('commented'),
                                        admin: admin,
                                        replyCallback: _this9.reply.bind(_this9, c)
                                    });
                                })
                            ),
                            !totalComments.length && _react2.default.createElement(
                                'p',
                                { className: 'gt-comments-null' },
                                this.i18n.t('first-comment-person')
                            ),
                            !isLoadOver && totalComments.length ? _react2.default.createElement(
                                'div',
                                { className: 'gt-comments-controls' },
                                _react2.default.createElement(_button2.default, { className: 'gt-btn-loadmore', onClick: this.handleCommentLoad, isLoading: isLoadMore, text: this.i18n.t('load-more') })
                            ) : null
                        );
                    }
                }, {
                    key: 'meta',
                    value: function meta() {
                        var _state5 = this.state,
                            user = _state5.user,
                            issue = _state5.issue,
                            isPopupVisible = _state5.isPopupVisible,
                            pagerDirection = _state5.pagerDirection,
                            localComments = _state5.localComments;

                        var cnt = (issue && issue.comments) + localComments.length;
                        $('.count-comment').html(cnt);
                        var isDesc = pagerDirection === 'last';
                        return _react2.default.createElement(
                            'div',
                            { className: 'gt-meta', key: 'meta' },
                            _react2.default.createElement('span', { className: 'gt-counts', dangerouslySetInnerHTML: {
                                __html: this.i18n.t('counts', {
                                    counts: '<a class="gt-link gt-link-counts" href="' + (issue && issue.html_url) + '" target="_blank">' + cnt + '</a>',
                                    smart_count: cnt
                                })
                            } }),
                            isPopupVisible && _react2.default.createElement(
                                'div',
                                { className: 'gt-popup' },
                                user ? _react2.default.createElement(_action2.default, { className: 'gt-action-sortasc' + (!isDesc ? ' is--active' : ''), onClick: this.handleSort('first'), text: this.i18n.t('sort-asc') }) : null,
                                user ? _react2.default.createElement(_action2.default, { className: 'gt-action-sortdesc' + (isDesc ? ' is--active' : ''), onClick: this.handleSort('last'), text: this.i18n.t('sort-desc') }) : null,
                                user ? _react2.default.createElement(_action2.default, { className: 'gt-action-logout', onClick: this.handleLogout, text: this.i18n.t('logout') }) : _react2.default.createElement(
                                    'a',
                                    { className: 'gt-action gt-action-login', onMouseDown: this.handleLogin },
                                    this.i18n.t('login-with-github')
                                ),
                                _react2.default.createElement(
                                    'div',
                                    { className: 'gt-copyright' },
                                    _react2.default.createElement(
                                        'a',
                                        { className: 'gt-link gt-link-project', href: 'https://github.com/gitalk/gitalk', target: '_blank' },
                                        'Gitalk'
                                    ),
                                    _react2.default.createElement(
                                        'span',
                                        { className: 'gt-version' },
                                        _const.GT_VERSION
                                    )
                                )
                            ),
                            _react2.default.createElement(
                                'div',
                                { className: 'gt-user' },
                                user ? _react2.default.createElement(
                                    'div',
                                    { className: isPopupVisible ? 'gt-user-inner is--poping' : 'gt-user-inner', onClick: this.handlePopup },
                                    _react2.default.createElement(
                                        'span',
                                        { className: 'gt-user-name' },
                                        user.login
                                    ),
                                    _react2.default.createElement(_svg2.default, { className: 'gt-ico-arrdown', name: 'arrow_down' })
                                ) : _react2.default.createElement(
                                    'div',
                                    { className: isPopupVisible ? 'gt-user-inner is--poping' : 'gt-user-inner', onClick: this.handlePopup },
                                    _react2.default.createElement(
                                        'span',
                                        { className: 'gt-user-name' },
                                        this.i18n.t('anonymous')
                                    ),
                                    _react2.default.createElement(_svg2.default, { className: 'gt-ico-arrdown', name: 'arrow_down' })
                                )
                            )
                        );
                    }
                }, {
                    key: 'render',
                    value: function render() {
                        var _state6 = this.state,
                            isIniting = _state6.isIniting,
                            isNoInit = _state6.isNoInit,
                            isOccurError = _state6.isOccurError,
                            errorMsg = _state6.errorMsg,
                            isInputFocused = _state6.isInputFocused;

                        return _react2.default.createElement(
                            'div',
                            { className: 'gt-container' + (isInputFocused ? ' gt-input-focused' : '') },
                            isIniting && this.initing(),
                            !isIniting && (isNoInit ? [] : [this.meta()]),
                            isOccurError && _react2.default.createElement(
                                'div',
                                { className: 'gt-error' },
                                errorMsg
                            ),
                            !isIniting && (isNoInit ? [this.noInit()] : [this.header(), this.comments()])
                        );
                    }
                }, {
                    key: 'accessToken',
                    get: function get() {
                        return this._accessToke || localStorage.getItem(_const.GT_ACCESS_TOKEN);
                    },
                    set: function set(token) {
                        localStorage.setItem(_const.GT_ACCESS_TOKEN, token);
                        this._accessToken = token;
                    }
                }, {
                    key: 'loginLink',
                    get: function get() {
                        var githubOauthUrl = 'http://github.com/login/oauth/authorize';
                        var clientID = this.options.clientID;

                        var query = {
                            client_id: clientID,
                            redirect_uri: location.href,
                            scope: 'public_repo'
                        };
                        return githubOauthUrl + '?' + (0, _util.queryStringify)(query);
                    }
                }]);
                return GitalkComponent;
            }(_react.Component);

            module.exports = GitalkComponent;

            /***/ }),
        /* 88 */
        /***/ (function(module, exports, __webpack_require__) {

            module.exports = { "default": __webpack_require__(89), __esModule: true };

            /***/ }),
        /* 89 */
        /***/ (function(module, exports, __webpack_require__) {

            __webpack_require__(52);
            __webpack_require__(20);
            __webpack_require__(26);
            __webpack_require__(98);
            module.exports = __webpack_require__(0).Promise;

            /***/ }),
        /* 90 */
        /***/ (function(module, exports, __webpack_require__) {

            var toInteger = __webpack_require__(36)
                , defined   = __webpack_require__(37);
// true  -> String#at
// false -> String#codePointAt
            module.exports = function(TO_STRING){
                return function(that, pos){
                    var s = String(defined(that))
                        , i = toInteger(pos)
                        , l = s.length
                        , a, b;
                    if(i < 0 || i >= l)return TO_STRING ? '' : undefined;
                    a = s.charCodeAt(i);
                    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
                        ? TO_STRING ? s.charAt(i) : a
                        : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
                };
            };

            /***/ }),
        /* 91 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";

            var create         = __webpack_require__(38)
                , descriptor     = __webpack_require__(19)
                , setToStringTag = __webpack_require__(25)
                , IteratorPrototype = {};

// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
            __webpack_require__(10)(IteratorPrototype, __webpack_require__(1)('iterator'), function(){ return this; });

            module.exports = function(Constructor, NAME, next){
                Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});
                setToStringTag(Constructor, NAME + ' Iterator');
            };

            /***/ }),
        /* 92 */
        /***/ (function(module, exports, __webpack_require__) {

            var dP       = __webpack_require__(6)
                , anObject = __webpack_require__(7)
                , getKeys  = __webpack_require__(17);

            module.exports = __webpack_require__(9) ? Object.defineProperties : function defineProperties(O, Properties){
                anObject(O);
                var keys   = getKeys(Properties)
                    , length = keys.length
                    , i = 0
                    , P;
                while(length > i)dP.f(O, P = keys[i++], Properties[P]);
                return O;
            };

            /***/ }),
        /* 93 */
        /***/ (function(module, exports, __webpack_require__) {

// false -> Array#indexOf
// true  -> Array#includes
            var toIObject = __webpack_require__(12)
                , toLength  = __webpack_require__(39)
                , toIndex   = __webpack_require__(94);
            module.exports = function(IS_INCLUDES){
                return function($this, el, fromIndex){
                    var O      = toIObject($this)
                        , length = toLength(O.length)
                        , index  = toIndex(fromIndex, length)
                        , value;
                    // Array#includes uses SameValueZero equality algorithm
                    if(IS_INCLUDES && el != el)while(length > index){
                        value = O[index++];
                        if(value != value)return true;
                        // Array#toIndex ignores holes, Array#includes - not
                    } else for(;length > index; index++)if(IS_INCLUDES || index in O){
                        if(O[index] === el)return IS_INCLUDES || index || 0;
                    } return !IS_INCLUDES && -1;
                };
            };

            /***/ }),
        /* 94 */
        /***/ (function(module, exports, __webpack_require__) {

            var toInteger = __webpack_require__(36)
                , max       = Math.max
                , min       = Math.min;
            module.exports = function(index, length){
                index = toInteger(index);
                return index < 0 ? max(index + length, 0) : min(index, length);
            };

            /***/ }),
        /* 95 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";

            var addToUnscopables = __webpack_require__(96)
                , step             = __webpack_require__(97)
                , Iterators        = __webpack_require__(16)
                , toIObject        = __webpack_require__(12);

// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
            module.exports = __webpack_require__(53)(Array, 'Array', function(iterated, kind){
                this._t = toIObject(iterated); // target
                this._i = 0;                   // next index
                this._k = kind;                // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
            }, function(){
                var O     = this._t
                    , kind  = this._k
                    , index = this._i++;
                if(!O || index >= O.length){
                    this._t = undefined;
                    return step(1);
                }
                if(kind == 'keys'  )return step(0, index);
                if(kind == 'values')return step(0, O[index]);
                return step(0, [index, O[index]]);
            }, 'values');

// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
            Iterators.Arguments = Iterators.Array;

            addToUnscopables('keys');
            addToUnscopables('values');
            addToUnscopables('entries');

            /***/ }),
        /* 96 */
        /***/ (function(module, exports) {

            module.exports = function(){ /* empty */ };

            /***/ }),
        /* 97 */
        /***/ (function(module, exports) {

            module.exports = function(done, value){
                return {value: value, done: !!done};
            };

            /***/ }),
        /* 98 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";

            var LIBRARY            = __webpack_require__(23)
                , global             = __webpack_require__(2)
                , ctx                = __webpack_require__(13)
                , classof            = __webpack_require__(43)
                , $export            = __webpack_require__(5)
                , isObject           = __webpack_require__(14)
                , aFunction          = __webpack_require__(30)
                , anInstance         = __webpack_require__(99)
                , forOf              = __webpack_require__(100)
                , speciesConstructor = __webpack_require__(101)
                , task               = __webpack_require__(61).set
                , microtask          = __webpack_require__(103)()
                , PROMISE            = 'Promise'
                , TypeError          = global.TypeError
                , process            = global.process
                , $Promise           = global[PROMISE]
                , process            = global.process
                , isNode             = classof(process) == 'process'
                , empty              = function(){ /* empty */ }
                , Internal, GenericPromiseCapability, Wrapper;

            var USE_NATIVE = !!function(){
                try {
                    // correct subclassing with @@species support
                    var promise     = $Promise.resolve(1)
                        , FakePromise = (promise.constructor = {})[__webpack_require__(1)('species')] = function(exec){ exec(empty, empty); };
                    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
                    return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;
                } catch(e){ /* empty */ }
            }();

// helpers
            var sameConstructor = function(a, b){
                // with library wrapper special case
                return a === b || a === $Promise && b === Wrapper;
            };
            var isThenable = function(it){
                var then;
                return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
            };
            var newPromiseCapability = function(C){
                return sameConstructor($Promise, C)
                    ? new PromiseCapability(C)
                    : new GenericPromiseCapability(C);
            };
            var PromiseCapability = GenericPromiseCapability = function(C){
                var resolve, reject;
                this.promise = new C(function($$resolve, $$reject){
                    if(resolve !== undefined || reject !== undefined)throw TypeError('Bad Promise constructor');
                    resolve = $$resolve;
                    reject  = $$reject;
                });
                this.resolve = aFunction(resolve);
                this.reject  = aFunction(reject);
            };
            var perform = function(exec){
                try {
                    exec();
                } catch(e){
                    return {error: e};
                }
            };
            var notify = function(promise, isReject){
                if(promise._n)return;
                promise._n = true;
                var chain = promise._c;
                microtask(function(){
                    var value = promise._v
                        , ok    = promise._s == 1
                        , i     = 0;
                    var run = function(reaction){
                        var handler = ok ? reaction.ok : reaction.fail
                            , resolve = reaction.resolve
                            , reject  = reaction.reject
                            , domain  = reaction.domain
                            , result, then;
                        try {
                            if(handler){
                                if(!ok){
                                    if(promise._h == 2)onHandleUnhandled(promise);
                                    promise._h = 1;
                                }
                                if(handler === true)result = value;
                                else {
                                    if(domain)domain.enter();
                                    result = handler(value);
                                    if(domain)domain.exit();
                                }
                                if(result === reaction.promise){
                                    reject(TypeError('Promise-chain cycle'));
                                } else if(then = isThenable(result)){
                                    then.call(result, resolve, reject);
                                } else resolve(result);
                            } else reject(value);
                        } catch(e){
                            reject(e);
                        }
                    };
                    while(chain.length > i)run(chain[i++]); // variable length - can't use forEach
                    promise._c = [];
                    promise._n = false;
                    if(isReject && !promise._h)onUnhandled(promise);
                });
            };
            var onUnhandled = function(promise){
                task.call(global, function(){
                    var value = promise._v
                        , abrupt, handler, console;
                    if(isUnhandled(promise)){
                        abrupt = perform(function(){
                            if(isNode){
                                process.emit('unhandledRejection', value, promise);
                            } else if(handler = global.onunhandledrejection){
                                handler({promise: promise, reason: value});
                            } else if((console = global.console) && console.error){
                                console.error('Unhandled promise rejection', value);
                            }
                        });
                        // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
                        promise._h = isNode || isUnhandled(promise) ? 2 : 1;
                    } promise._a = undefined;
                    if(abrupt)throw abrupt.error;
                });
            };
            var isUnhandled = function(promise){
                if(promise._h == 1)return false;
                var chain = promise._a || promise._c
                    , i     = 0
                    , reaction;
                while(chain.length > i){
                    reaction = chain[i++];
                    if(reaction.fail || !isUnhandled(reaction.promise))return false;
                } return true;
            };
            var onHandleUnhandled = function(promise){
                task.call(global, function(){
                    var handler;
                    if(isNode){
                        process.emit('rejectionHandled', promise);
                    } else if(handler = global.onrejectionhandled){
                        handler({promise: promise, reason: promise._v});
                    }
                });
            };
            var $reject = function(value){
                var promise = this;
                if(promise._d)return;
                promise._d = true;
                promise = promise._w || promise; // unwrap
                promise._v = value;
                promise._s = 2;
                if(!promise._a)promise._a = promise._c.slice();
                notify(promise, true);
            };
            var $resolve = function(value){
                var promise = this
                    , then;
                if(promise._d)return;
                promise._d = true;
                promise = promise._w || promise; // unwrap
                try {
                    if(promise === value)throw TypeError("Promise can't be resolved itself");
                    if(then = isThenable(value)){
                        microtask(function(){
                            var wrapper = {_w: promise, _d: false}; // wrap
                            try {
                                then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
                            } catch(e){
                                $reject.call(wrapper, e);
                            }
                        });
                    } else {
                        promise._v = value;
                        promise._s = 1;
                        notify(promise, false);
                    }
                } catch(e){
                    $reject.call({_w: promise, _d: false}, e); // wrap
                }
            };

// constructor polyfill
            if(!USE_NATIVE){
                // 25.4.3.1 Promise(executor)
                $Promise = function Promise(executor){
                    anInstance(this, $Promise, PROMISE, '_h');
                    aFunction(executor);
                    Internal.call(this);
                    try {
                        executor(ctx($resolve, this, 1), ctx($reject, this, 1));
                    } catch(err){
                        $reject.call(this, err);
                    }
                };
                Internal = function Promise(executor){
                    this._c = [];             // <- awaiting reactions
                    this._a = undefined;      // <- checked in isUnhandled reactions
                    this._s = 0;              // <- state
                    this._d = false;          // <- done
                    this._v = undefined;      // <- value
                    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
                    this._n = false;          // <- notify
                };
                Internal.prototype = __webpack_require__(104)($Promise.prototype, {
                    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
                    then: function then(onFulfilled, onRejected){
                        var reaction    = newPromiseCapability(speciesConstructor(this, $Promise));
                        reaction.ok     = typeof onFulfilled == 'function' ? onFulfilled : true;
                        reaction.fail   = typeof onRejected == 'function' && onRejected;
                        reaction.domain = isNode ? process.domain : undefined;
                        this._c.push(reaction);
                        if(this._a)this._a.push(reaction);
                        if(this._s)notify(this, false);
                        return reaction.promise;
                    },
                    // 25.4.5.1 Promise.prototype.catch(onRejected)
                    'catch': function(onRejected){
                        return this.then(undefined, onRejected);
                    }
                });
                PromiseCapability = function(){
                    var promise  = new Internal;
                    this.promise = promise;
                    this.resolve = ctx($resolve, promise, 1);
                    this.reject  = ctx($reject, promise, 1);
                };
            }

            $export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: $Promise});
            __webpack_require__(25)($Promise, PROMISE);
            __webpack_require__(105)(PROMISE);
            Wrapper = __webpack_require__(0)[PROMISE];

// statics
            $export($export.S + $export.F * !USE_NATIVE, PROMISE, {
                // 25.4.4.5 Promise.reject(r)
                reject: function reject(r){
                    var capability = newPromiseCapability(this)
                        , $$reject   = capability.reject;
                    $$reject(r);
                    return capability.promise;
                }
            });
            $export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
                // 25.4.4.6 Promise.resolve(x)
                resolve: function resolve(x){
                    // instanceof instead of internal slot check because we should fix it without replacement native Promise core
                    if(x instanceof $Promise && sameConstructor(x.constructor, this))return x;
                    var capability = newPromiseCapability(this)
                        , $$resolve  = capability.resolve;
                    $$resolve(x);
                    return capability.promise;
                }
            });
            $export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(62)(function(iter){
                    $Promise.all(iter)['catch'](empty);
                })), PROMISE, {
                // 25.4.4.1 Promise.all(iterable)
                all: function all(iterable){
                    var C          = this
                        , capability = newPromiseCapability(C)
                        , resolve    = capability.resolve
                        , reject     = capability.reject;
                    var abrupt = perform(function(){
                        var values    = []
                            , index     = 0
                            , remaining = 1;
                        forOf(iterable, false, function(promise){
                            var $index        = index++
                                , alreadyCalled = false;
                            values.push(undefined);
                            remaining++;
                            C.resolve(promise).then(function(value){
                                if(alreadyCalled)return;
                                alreadyCalled  = true;
                                values[$index] = value;
                                --remaining || resolve(values);
                            }, reject);
                        });
                        --remaining || resolve(values);
                    });
                    if(abrupt)reject(abrupt.error);
                    return capability.promise;
                },
                // 25.4.4.4 Promise.race(iterable)
                race: function race(iterable){
                    var C          = this
                        , capability = newPromiseCapability(C)
                        , reject     = capability.reject;
                    var abrupt = perform(function(){
                        forOf(iterable, false, function(promise){
                            C.resolve(promise).then(capability.resolve, reject);
                        });
                    });
                    if(abrupt)reject(abrupt.error);
                    return capability.promise;
                }
            });

            /***/ }),
        /* 99 */
        /***/ (function(module, exports) {

            module.exports = function(it, Constructor, name, forbiddenField){
                if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){
                    throw TypeError(name + ': incorrect invocation!');
                } return it;
            };

            /***/ }),
        /* 100 */
        /***/ (function(module, exports, __webpack_require__) {

            var ctx         = __webpack_require__(13)
                , call        = __webpack_require__(59)
                , isArrayIter = __webpack_require__(60)
                , anObject    = __webpack_require__(7)
                , toLength    = __webpack_require__(39)
                , getIterFn   = __webpack_require__(44)
                , BREAK       = {}
                , RETURN      = {};
            var exports = module.exports = function(iterable, entries, fn, that, ITERATOR){
                var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable)
                    , f      = ctx(fn, that, entries ? 2 : 1)
                    , index  = 0
                    , length, step, iterator, result;
                if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');
                // fast case for arrays with default iterator
                if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){
                    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
                    if(result === BREAK || result === RETURN)return result;
                } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){
                    result = call(iterator, f, step.value, entries);
                    if(result === BREAK || result === RETURN)return result;
                }
            };
            exports.BREAK  = BREAK;
            exports.RETURN = RETURN;

            /***/ }),
        /* 101 */
        /***/ (function(module, exports, __webpack_require__) {

// 7.3.20 SpeciesConstructor(O, defaultConstructor)
            var anObject  = __webpack_require__(7)
                , aFunction = __webpack_require__(30)
                , SPECIES   = __webpack_require__(1)('species');
            module.exports = function(O, D){
                var C = anObject(O).constructor, S;
                return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
            };

            /***/ }),
        /* 102 */
        /***/ (function(module, exports) {

// fast apply, http://jsperf.lnkit.com/fast-apply/5
            module.exports = function(fn, args, that){
                var un = that === undefined;
                switch(args.length){
                    case 0: return un ? fn()
                        : fn.call(that);
                    case 1: return un ? fn(args[0])
                        : fn.call(that, args[0]);
                    case 2: return un ? fn(args[0], args[1])
                        : fn.call(that, args[0], args[1]);
                    case 3: return un ? fn(args[0], args[1], args[2])
                        : fn.call(that, args[0], args[1], args[2]);
                    case 4: return un ? fn(args[0], args[1], args[2], args[3])
                        : fn.call(that, args[0], args[1], args[2], args[3]);
                } return              fn.apply(that, args);
            };

            /***/ }),
        /* 103 */
        /***/ (function(module, exports, __webpack_require__) {

            var global    = __webpack_require__(2)
                , macrotask = __webpack_require__(61).set
                , Observer  = global.MutationObserver || global.WebKitMutationObserver
                , process   = global.process
                , Promise   = global.Promise
                , isNode    = __webpack_require__(21)(process) == 'process';

            module.exports = function(){
                var head, last, notify;

                var flush = function(){
                    var parent, fn;
                    if(isNode && (parent = process.domain))parent.exit();
                    while(head){
                        fn   = head.fn;
                        head = head.next;
                        try {
                            fn();
                        } catch(e){
                            if(head)notify();
                            else last = undefined;
                            throw e;
                        }
                    } last = undefined;
                    if(parent)parent.enter();
                };

                // Node.js
                if(isNode){
                    notify = function(){
                        process.nextTick(flush);
                    };
                    // browsers with MutationObserver
                } else if(Observer){
                    var toggle = true
                        , node   = document.createTextNode('');
                    new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new
                    notify = function(){
                        node.data = toggle = !toggle;
                    };
                    // environments with maybe non-completely correct, but existent Promise
                } else if(Promise && Promise.resolve){
                    var promise = Promise.resolve();
                    notify = function(){
                        promise.then(flush);
                    };
                    // for other environments - macrotask based on:
                    // - setImmediate
                    // - MessageChannel
                    // - window.postMessag
                    // - onreadystatechange
                    // - setTimeout
                } else {
                    notify = function(){
                        // strange IE + webpack dev server bug - use .call(global)
                        macrotask.call(global, flush);
                    };
                }

                return function(fn){
                    var task = {fn: fn, next: undefined};
                    if(last)last.next = task;
                    if(!head){
                        head = task;
                        notify();
                    } last = task;
                };
            };

            /***/ }),
        /* 104 */
        /***/ (function(module, exports, __webpack_require__) {

            var hide = __webpack_require__(10);
            module.exports = function(target, src, safe){
                for(var key in src){
                    if(safe && target[key])target[key] = src[key];
                    else hide(target, key, src[key]);
                } return target;
            };

            /***/ }),
        /* 105 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";

            var global      = __webpack_require__(2)
                , core        = __webpack_require__(0)
                , dP          = __webpack_require__(6)
                , DESCRIPTORS = __webpack_require__(9)
                , SPECIES     = __webpack_require__(1)('species');

            module.exports = function(KEY){
                var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
                if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, {
                    configurable: true,
                    get: function(){ return this; }
                });
            };

            /***/ }),
        /* 106 */
        /***/ (function(module, exports, __webpack_require__) {

            module.exports = { "default": __webpack_require__(107), __esModule: true };

            /***/ }),
        /* 107 */
        /***/ (function(module, exports, __webpack_require__) {

            __webpack_require__(108);
            module.exports = __webpack_require__(0).Object.assign;

            /***/ }),
        /* 108 */
        /***/ (function(module, exports, __webpack_require__) {

// 19.1.3.1 Object.assign(target, source)
            var $export = __webpack_require__(5);

            $export($export.S + $export.F, 'Object', {assign: __webpack_require__(109)});

            /***/ }),
        /* 109 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";

// 19.1.2.1 Object.assign(target, source, ...)
            var getKeys  = __webpack_require__(17)
                , gOPS     = __webpack_require__(45)
                , pIE      = __webpack_require__(27)
                , toObject = __webpack_require__(22)
                , IObject  = __webpack_require__(56)
                , $assign  = Object.assign;

// should work with symbols and should have deterministic property order (V8 bug)
            module.exports = !$assign || __webpack_require__(15)(function(){
                var A = {}
                    , B = {}
                    , S = Symbol()
                    , K = 'abcdefghijklmnopqrst';
                A[S] = 7;
                K.split('').forEach(function(k){ B[k] = k; });
                return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
            }) ? function assign(target, source){ // eslint-disable-line no-unused-vars
                var T     = toObject(target)
                    , aLen  = arguments.length
                    , index = 1
                    , getSymbols = gOPS.f
                    , isEnum     = pIE.f;
                while(aLen > index){
                    var S      = IObject(arguments[index++])
                        , keys   = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
                        , length = keys.length
                        , j      = 0
                        , key;
                    while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
                } return T;
            } : $assign;

            /***/ }),
        /* 110 */
        /***/ (function(module, exports, __webpack_require__) {

            __webpack_require__(111);
            module.exports = __webpack_require__(0).Object.getPrototypeOf;

            /***/ }),
        /* 111 */
        /***/ (function(module, exports, __webpack_require__) {

// 19.1.2.9 Object.getPrototypeOf(O)
            var toObject        = __webpack_require__(22)
                , $getPrototypeOf = __webpack_require__(58);

            __webpack_require__(64)('getPrototypeOf', function(){
                return function getPrototypeOf(it){
                    return $getPrototypeOf(toObject(it));
                };
            });

            /***/ }),
        /* 112 */
        /***/ (function(module, exports, __webpack_require__) {

            module.exports = { "default": __webpack_require__(113), __esModule: true };

            /***/ }),
        /* 113 */
        /***/ (function(module, exports, __webpack_require__) {

            __webpack_require__(20);
            __webpack_require__(26);
            module.exports = __webpack_require__(46).f('iterator');

            /***/ }),
        /* 114 */
        /***/ (function(module, exports, __webpack_require__) {

            module.exports = { "default": __webpack_require__(115), __esModule: true };

            /***/ }),
        /* 115 */
        /***/ (function(module, exports, __webpack_require__) {

            __webpack_require__(116);
            __webpack_require__(52);
            __webpack_require__(122);
            __webpack_require__(123);
            module.exports = __webpack_require__(0).Symbol;

            /***/ }),
        /* 116 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";

// ECMAScript 6 symbols shim
            var global         = __webpack_require__(2)
                , has            = __webpack_require__(11)
                , DESCRIPTORS    = __webpack_require__(9)
                , $export        = __webpack_require__(5)
                , redefine       = __webpack_require__(54)
                , META           = __webpack_require__(117).KEY
                , $fails         = __webpack_require__(15)
                , shared         = __webpack_require__(41)
                , setToStringTag = __webpack_require__(25)
                , uid            = __webpack_require__(24)
                , wks            = __webpack_require__(1)
                , wksExt         = __webpack_require__(46)
                , wksDefine      = __webpack_require__(47)
                , keyOf          = __webpack_require__(118)
                , enumKeys       = __webpack_require__(119)
                , isArray        = __webpack_require__(120)
                , anObject       = __webpack_require__(7)
                , toIObject      = __webpack_require__(12)
                , toPrimitive    = __webpack_require__(32)
                , createDesc     = __webpack_require__(19)
                , _create        = __webpack_require__(38)
                , gOPNExt        = __webpack_require__(121)
                , $GOPD          = __webpack_require__(68)
                , $DP            = __webpack_require__(6)
                , $keys          = __webpack_require__(17)
                , gOPD           = $GOPD.f
                , dP             = $DP.f
                , gOPN           = gOPNExt.f
                , $Symbol        = global.Symbol
                , $JSON          = global.JSON
                , _stringify     = $JSON && $JSON.stringify
                , PROTOTYPE      = 'prototype'
                , HIDDEN         = wks('_hidden')
                , TO_PRIMITIVE   = wks('toPrimitive')
                , isEnum         = {}.propertyIsEnumerable
                , SymbolRegistry = shared('symbol-registry')
                , AllSymbols     = shared('symbols')
                , OPSymbols      = shared('op-symbols')
                , ObjectProto    = Object[PROTOTYPE]
                , USE_NATIVE     = typeof $Symbol == 'function'
                , QObject        = global.QObject;
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
            var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;

// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
            var setSymbolDesc = DESCRIPTORS && $fails(function(){
                return _create(dP({}, 'a', {
                        get: function(){ return dP(this, 'a', {value: 7}).a; }
                    })).a != 7;
            }) ? function(it, key, D){
                var protoDesc = gOPD(ObjectProto, key);
                if(protoDesc)delete ObjectProto[key];
                dP(it, key, D);
                if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);
            } : dP;

            var wrap = function(tag){
                var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
                sym._k = tag;
                return sym;
            };

            var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){
                return typeof it == 'symbol';
            } : function(it){
                return it instanceof $Symbol;
            };

            var $defineProperty = function defineProperty(it, key, D){
                if(it === ObjectProto)$defineProperty(OPSymbols, key, D);
                anObject(it);
                key = toPrimitive(key, true);
                anObject(D);
                if(has(AllSymbols, key)){
                    if(!D.enumerable){
                        if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));
                        it[HIDDEN][key] = true;
                    } else {
                        if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;
                        D = _create(D, {enumerable: createDesc(0, false)});
                    } return setSymbolDesc(it, key, D);
                } return dP(it, key, D);
            };
            var $defineProperties = function defineProperties(it, P){
                anObject(it);
                var keys = enumKeys(P = toIObject(P))
                    , i    = 0
                    , l = keys.length
                    , key;
                while(l > i)$defineProperty(it, key = keys[i++], P[key]);
                return it;
            };
            var $create = function create(it, P){
                return P === undefined ? _create(it) : $defineProperties(_create(it), P);
            };
            var $propertyIsEnumerable = function propertyIsEnumerable(key){
                var E = isEnum.call(this, key = toPrimitive(key, true));
                if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false;
                return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
            };
            var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){
                it  = toIObject(it);
                key = toPrimitive(key, true);
                if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return;
                var D = gOPD(it, key);
                if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;
                return D;
            };
            var $getOwnPropertyNames = function getOwnPropertyNames(it){
                var names  = gOPN(toIObject(it))
                    , result = []
                    , i      = 0
                    , key;
                while(names.length > i){
                    if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);
                } return result;
            };
            var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
                var IS_OP  = it === ObjectProto
                    , names  = gOPN(IS_OP ? OPSymbols : toIObject(it))
                    , result = []
                    , i      = 0
                    , key;
                while(names.length > i){
                    if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]);
                } return result;
            };

// 19.4.1.1 Symbol([description])
            if(!USE_NATIVE){
                $Symbol = function Symbol(){
                    if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');
                    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
                    var $set = function(value){
                        if(this === ObjectProto)$set.call(OPSymbols, value);
                        if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
                        setSymbolDesc(this, tag, createDesc(1, value));
                    };
                    if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set});
                    return wrap(tag);
                };
                redefine($Symbol[PROTOTYPE], 'toString', function toString(){
                    return this._k;
                });

                $GOPD.f = $getOwnPropertyDescriptor;
                $DP.f   = $defineProperty;
                __webpack_require__(67).f = gOPNExt.f = $getOwnPropertyNames;
                __webpack_require__(27).f  = $propertyIsEnumerable;
                __webpack_require__(45).f = $getOwnPropertySymbols;

                if(DESCRIPTORS && !__webpack_require__(23)){
                    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
                }

                wksExt.f = function(name){
                    return wrap(wks(name));
                }
            }

            $export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});

            for(var symbols = (
                // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
                'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
            ).split(','), i = 0; symbols.length > i; )wks(symbols[i++]);

            for(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);

            $export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
                // 19.4.2.1 Symbol.for(key)
                'for': function(key){
                    return has(SymbolRegistry, key += '')
                        ? SymbolRegistry[key]
                        : SymbolRegistry[key] = $Symbol(key);
                },
                // 19.4.2.5 Symbol.keyFor(sym)
                keyFor: function keyFor(key){
                    if(isSymbol(key))return keyOf(SymbolRegistry, key);
                    throw TypeError(key + ' is not a symbol!');
                },
                useSetter: function(){ setter = true; },
                useSimple: function(){ setter = false; }
            });

            $export($export.S + $export.F * !USE_NATIVE, 'Object', {
                // 19.1.2.2 Object.create(O [, Properties])
                create: $create,
                // 19.1.2.4 Object.defineProperty(O, P, Attributes)
                defineProperty: $defineProperty,
                // 19.1.2.3 Object.defineProperties(O, Properties)
                defineProperties: $defineProperties,
                // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
                getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
                // 19.1.2.7 Object.getOwnPropertyNames(O)
                getOwnPropertyNames: $getOwnPropertyNames,
                // 19.1.2.8 Object.getOwnPropertySymbols(O)
                getOwnPropertySymbols: $getOwnPropertySymbols
            });

// 24.3.2 JSON.stringify(value [, replacer [, space]])
            $JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){
                    var S = $Symbol();
                    // MS Edge converts symbol values to JSON as {}
                    // WebKit converts symbol values to JSON as null
                    // V8 throws on boxed symbols
                    return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
                })), 'JSON', {
                stringify: function stringify(it){
                    if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
                    var args = [it]
                        , i    = 1
                        , replacer, $replacer;
                    while(arguments.length > i)args.push(arguments[i++]);
                    replacer = args[1];
                    if(typeof replacer == 'function')$replacer = replacer;
                    if($replacer || !isArray(replacer))replacer = function(key, value){
                        if($replacer)value = $replacer.call(this, key, value);
                        if(!isSymbol(value))return value;
                    };
                    args[1] = replacer;
                    return _stringify.apply($JSON, args);
                }
            });

// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
            $Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(10)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
// 19.4.3.5 Symbol.prototype[@@toStringTag]
            setToStringTag($Symbol, 'Symbol');
// 20.2.1.9 Math[@@toStringTag]
            setToStringTag(Math, 'Math', true);
// 24.3.3 JSON[@@toStringTag]
            setToStringTag(global.JSON, 'JSON', true);

            /***/ }),
        /* 117 */
        /***/ (function(module, exports, __webpack_require__) {

            var META     = __webpack_require__(24)('meta')
                , isObject = __webpack_require__(14)
                , has      = __webpack_require__(11)
                , setDesc  = __webpack_require__(6).f
                , id       = 0;
            var isExtensible = Object.isExtensible || function(){
                    return true;
                };
            var FREEZE = !__webpack_require__(15)(function(){
                return isExtensible(Object.preventExtensions({}));
            });
            var setMeta = function(it){
                setDesc(it, META, {value: {
                    i: 'O' + ++id, // object ID
                    w: {}          // weak collections IDs
                }});
            };
            var fastKey = function(it, create){
                // return primitive with prefix
                if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
                if(!has(it, META)){
                    // can't set metadata to uncaught frozen object
                    if(!isExtensible(it))return 'F';
                    // not necessary to add metadata
                    if(!create)return 'E';
                    // add missing metadata
                    setMeta(it);
                    // return object ID
                } return it[META].i;
            };
            var getWeak = function(it, create){
                if(!has(it, META)){
                    // can't set metadata to uncaught frozen object
                    if(!isExtensible(it))return true;
                    // not necessary to add metadata
                    if(!create)return false;
                    // add missing metadata
                    setMeta(it);
                    // return hash weak collections IDs
                } return it[META].w;
            };
// add metadata on freeze-family methods calling
            var onFreeze = function(it){
                if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);
                return it;
            };
            var meta = module.exports = {
                KEY:      META,
                NEED:     false,
                fastKey:  fastKey,
                getWeak:  getWeak,
                onFreeze: onFreeze
            };

            /***/ }),
        /* 118 */
        /***/ (function(module, exports, __webpack_require__) {

            var getKeys   = __webpack_require__(17)
                , toIObject = __webpack_require__(12);
            module.exports = function(object, el){
                var O      = toIObject(object)
                    , keys   = getKeys(O)
                    , length = keys.length
                    , index  = 0
                    , key;
                while(length > index)if(O[key = keys[index++]] === el)return key;
            };

            /***/ }),
        /* 119 */
        /***/ (function(module, exports, __webpack_require__) {

// all enumerable object keys, includes symbols
            var getKeys = __webpack_require__(17)
                , gOPS    = __webpack_require__(45)
                , pIE     = __webpack_require__(27);
            module.exports = function(it){
                var result     = getKeys(it)
                    , getSymbols = gOPS.f;
                if(getSymbols){
                    var symbols = getSymbols(it)
                        , isEnum  = pIE.f
                        , i       = 0
                        , key;
                    while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);
                } return result;
            };

            /***/ }),
        /* 120 */
        /***/ (function(module, exports, __webpack_require__) {

// 7.2.2 IsArray(argument)
            var cof = __webpack_require__(21);
            module.exports = Array.isArray || function isArray(arg){
                    return cof(arg) == 'Array';
                };

            /***/ }),
        /* 121 */
        /***/ (function(module, exports, __webpack_require__) {

// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
            var toIObject = __webpack_require__(12)
                , gOPN      = __webpack_require__(67).f
                , toString  = {}.toString;

            var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
                ? Object.getOwnPropertyNames(window) : [];

            var getWindowNames = function(it){
                try {
                    return gOPN(it);
                } catch(e){
                    return windowNames.slice();
                }
            };

            module.exports.f = function getOwnPropertyNames(it){
                return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
            };


            /***/ }),
        /* 122 */
        /***/ (function(module, exports, __webpack_require__) {

            __webpack_require__(47)('asyncIterator');

            /***/ }),
        /* 123 */
        /***/ (function(module, exports, __webpack_require__) {

            __webpack_require__(47)('observable');

            /***/ }),
        /* 124 */
        /***/ (function(module, exports, __webpack_require__) {

            module.exports = { "default": __webpack_require__(125), __esModule: true };

            /***/ }),
        /* 125 */
        /***/ (function(module, exports, __webpack_require__) {

            __webpack_require__(126);
            module.exports = __webpack_require__(0).Object.setPrototypeOf;

            /***/ }),
        /* 126 */
        /***/ (function(module, exports, __webpack_require__) {

// 19.1.3.19 Object.setPrototypeOf(O, proto)
            var $export = __webpack_require__(5);
            $export($export.S, 'Object', {setPrototypeOf: __webpack_require__(127).set});

            /***/ }),
        /* 127 */
        /***/ (function(module, exports, __webpack_require__) {

// Works with __proto__ only. Old v8 can't work with null proto objects.
            /* eslint-disable no-proto */
            var isObject = __webpack_require__(14)
                , anObject = __webpack_require__(7);
            var check = function(O, proto){
                anObject(O);
                if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!");
            };
            module.exports = {
                set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
                    function(test, buggy, set){
                        try {
                            set = __webpack_require__(13)(Function.call, __webpack_require__(68).f(Object.prototype, '__proto__').set, 2);
                            set(test, []);
                            buggy = !(test instanceof Array);
                        } catch(e){ buggy = true; }
                        return function setPrototypeOf(O, proto){
                            check(O, proto);
                            if(buggy)O.__proto__ = proto;
                            else set(O, proto);
                            return O;
                        };
                    }({}, false) : undefined),
                check: check
            };

            /***/ }),
        /* 128 */
        /***/ (function(module, exports, __webpack_require__) {

            module.exports = { "default": __webpack_require__(129), __esModule: true };

            /***/ }),
        /* 129 */
        /***/ (function(module, exports, __webpack_require__) {

            __webpack_require__(130);
            var $Object = __webpack_require__(0).Object;
            module.exports = function create(P, D){
                return $Object.create(P, D);
            };

            /***/ }),
        /* 130 */
        /***/ (function(module, exports, __webpack_require__) {

            var $export = __webpack_require__(5)
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
            $export($export.S, 'Object', {create: __webpack_require__(38)});

            /***/ }),
        /* 131 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            Object.defineProperty(exports, "__esModule", {
                value: true
            });

            var _FlipMove = __webpack_require__(132);

            var _FlipMove2 = _interopRequireDefault(_FlipMove);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            exports.default = _FlipMove2.default;
            /**
             * React Flip Move
             * (c) 2016-present Joshua Comeau
             */

            module.exports = exports['default'];

            /***/ }),
        /* 132 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            Object.defineProperty(exports, "__esModule", {
                value: true
            });

            var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();

            var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

            var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

            var _react = __webpack_require__(4);

            var _react2 = _interopRequireDefault(_react);

            __webpack_require__(133);

            var _propConverter = __webpack_require__(134);

            var _propConverter2 = _interopRequireDefault(_propConverter);

            var _domManipulation = __webpack_require__(137);

            var _helpers = __webpack_require__(48);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

            function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }

            function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
            /**
             * React Flip Move
             * (c) 2016-present Joshua Comeau
             *
             * For information on how this code is laid out, check out CODE_TOUR.md
             */

            /* eslint-disable react/prop-types */

            var transitionEnd = (0, _domManipulation.whichTransitionEvent)();
            var noBrowserSupport = !transitionEnd;

            function getKey(childData) {
                return childData.key || '';
            }

            var FlipMove = function (_Component) {
                _inherits(FlipMove, _Component);

                function FlipMove() {
                    var _ref;

                    var _temp, _this, _ret;

                    _classCallCheck(this, FlipMove);

                    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
                        args[_key] = arguments[_key];
                    }

                    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = FlipMove.__proto__ || Object.getPrototypeOf(FlipMove)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
                        children: _react.Children.toArray(_this.props.children).map(function (element) {
                            return _extends({}, element, {
                                element: element,
                                appearing: true
                            });
                        })
                    }, _this.childrenData = {}, _this.parentData = {
                        domNode: null,
                        boundingBox: null
                    }, _this.heightPlaceholderData = {
                        domNode: null
                    }, _this.remainingAnimations = 0, _this.childrenToAnimate = [], _this.runAnimation = function () {
                        var dynamicChildren = _this.state.children.filter(_this.doesChildNeedToBeAnimated);

                        dynamicChildren.forEach(function (child, n) {
                            _this.remainingAnimations += 1;
                            _this.childrenToAnimate.push(getKey(child));
                            _this.animateChild(child, n);
                        });

                        if (typeof _this.props.onStartAll === 'function') {
                            _this.callChildrenHook(_this.props.onStartAll);
                        }
                    }, _this.doesChildNeedToBeAnimated = function (child) {
                        // If the child doesn't have a key, it's an immovable child (one that we
                        // do not want to do FLIP stuff to.)
                        if (!getKey(child)) {
                            return false;
                        }

                        var childData = _this.getChildData(getKey(child));
                        var childDomNode = childData.domNode;
                        var childBoundingBox = childData.boundingBox;
                        var parentBoundingBox = _this.parentData.boundingBox;

                        if (!childDomNode) {
                            return false;
                        }

                        var _this$props = _this.props,
                            appearAnimation = _this$props.appearAnimation,
                            enterAnimation = _this$props.enterAnimation,
                            leaveAnimation = _this$props.leaveAnimation,
                            getPosition = _this$props.getPosition;


                        var isAppearingWithAnimation = child.appearing && appearAnimation;
                        var isEnteringWithAnimation = child.entering && enterAnimation;
                        var isLeavingWithAnimation = child.leaving && leaveAnimation;

                        if (isAppearingWithAnimation || isEnteringWithAnimation || isLeavingWithAnimation) {
                            return true;
                        }

                        // If it isn't entering/leaving, we want to animate it if it's
                        // on-screen position has changed.

                        var _getPositionDelta = (0, _domManipulation.getPositionDelta)({
                                childDomNode: childDomNode,
                                childBoundingBox: childBoundingBox,
                                parentBoundingBox: parentBoundingBox,
                                getPosition: getPosition
                            }),
                            _getPositionDelta2 = _slicedToArray(_getPositionDelta, 2),
                            dX = _getPositionDelta2[0],
                            dY = _getPositionDelta2[1];

                        return dX !== 0 || dY !== 0;
                    }, _temp), _possibleConstructorReturn(_this, _ret);
                }
                // Copy props.children into state.
                // To understand why this is important (and not an anti-pattern), consider
                // how "leave" animations work. An item has "left" when the component
                // receives a new set of props that do NOT contain the item.
                // If we just render the props as-is, the item would instantly disappear.
                // We want to keep the item rendered for a little while, until its animation
                // can complete. Because we cannot mutate props, we make `state` the source
                // of truth.


                // FlipMove needs to know quite a bit about its children in order to do
                // its job. We store these as a property on the instance. We're not using
                // state, because we don't want changes to trigger re-renders, we just
                // need a place to keep the data for reference, when changes happen.
                // This field should not be accessed directly. Instead, use getChildData,
                // putChildData, etc...


                // Similarly, track the dom node and box of our parent element.


                // If `maintainContainerHeight` prop is set to true, we'll create a
                // placeholder element which occupies space so that the parent height
                // doesn't change when items are removed from the document flow (which
                // happens during leave animations)


                // Keep track of remaining animations so we know when to fire the
                // all-finished callback, and clean up after ourselves.
                // NOTE: we can't simply use childrenToAnimate.length to track remaining
                // animations, because we need to maintain the list of animating children,
                // to pass to the `onFinishAll` handler.


                _createClass(FlipMove, [{
                    key: 'componentDidMount',
                    value: function componentDidMount() {
                        // Run our `appearAnimation` if it was requested, right after the
                        // component mounts.
                        var shouldTriggerFLIP = this.props.appearAnimation && !this.isAnimationDisabled(this.props);

                        if (shouldTriggerFLIP) {
                            this.prepForAnimation();
                            this.runAnimation();
                        }
                    }
                }, {
                    key: 'componentWillReceiveProps',
                    value: function componentWillReceiveProps(nextProps) {
                        // When the component is handed new props, we need to figure out the
                        // "resting" position of all currently-rendered DOM nodes.
                        // We store that data in this.parent and this.children,
                        // so it can be used later to work out the animation.
                        this.updateBoundingBoxCaches();

                        // Convert opaque children object to array.
                        var nextChildren = _react.Children.toArray(nextProps.children);

                        // Next, we need to update our state, so that it contains our new set of
                        // children. If animation is disabled or unsupported, this is easy;
                        // we just copy our props into state.
                        // Assuming that we can animate, though, we have to do some work.
                        // Essentially, we want to keep just-deleted nodes in the DOM for a bit
                        // longer, so that we can animate them away.
                        this.setState({
                            children: this.isAnimationDisabled(nextProps) ? nextChildren.map(function (element) {
                                return _extends({}, element, { element: element });
                            }) : this.calculateNextSetOfChildren(nextChildren)
                        });
                    }
                }, {
                    key: 'componentDidUpdate',
                    value: function componentDidUpdate(previousProps) {
                        // If the children have been re-arranged, moved, or added/removed,
                        // trigger the main FLIP animation.
                        //
                        // IMPORTANT: We need to make sure that the children have actually changed.
                        // At the end of the transition, we clean up nodes that need to be removed.
                        var oldChildrenKeys = _react.Children.toArray(this.props.children).map(function (d) {
                            return d.key;
                        });
                        var nextChildrenKeys = _react.Children.toArray(previousProps.children).map(function (d) {
                            return d.key;
                        });

                        var shouldTriggerFLIP = !(0, _helpers.arraysEqual)(oldChildrenKeys, nextChildrenKeys) && !this.isAnimationDisabled(this.props);

                        if (shouldTriggerFLIP) {
                            this.prepForAnimation();
                            this.runAnimation();
                        }
                    }
                }, {
                    key: 'calculateNextSetOfChildren',
                    value: function calculateNextSetOfChildren(nextChildren) {
                        var _this2 = this;

                        // We want to:
                        //   - Mark all new children as `entering`
                        //   - Pull in previous children that aren't in nextChildren, and mark them
                        //     as `leaving`
                        //   - Preserve the nextChildren list order, with leaving children in their
                        //     appropriate places.
                        //

                        var updatedChildren = nextChildren.map(function (nextChild) {
                            var child = _this2.findChildByKey(nextChild.key || '');

                            // If the current child did exist, but it was in the midst of leaving,
                            // we want to treat it as though it's entering
                            var isEntering = !child || child.leaving;

                            return _extends({}, nextChild, { element: nextChild, entering: isEntering });
                        });

                        // This is tricky. We want to keep the nextChildren's ordering, but with
                        // any just-removed items maintaining their original position.
                        // eg.
                        //   this.state.children  = [ 1, 2, 3, 4 ]
                        //   nextChildren         = [ 3, 1 ]
                        //
                        // In this example, we've removed the '2' & '4'
                        // We want to end up with:  [ 2, 3, 1, 4 ]
                        //
                        // To accomplish that, we'll iterate through this.state.children. whenever
                        // we find a match, we'll append our `leaving` flag to it, and insert it
                        // into the nextChildren in its ORIGINAL position. Note that, as we keep
                        // inserting old items into the new list, the "original" position will
                        // keep incrementing.
                        var numOfChildrenLeaving = 0;
                        this.state.children.forEach(function (child, index) {
                            var isLeaving = !nextChildren.find(function (_ref2) {
                                var key = _ref2.key;
                                return key === getKey(child);
                            });

                            // If the child isn't leaving (or, if there is no leave animation),
                            // we don't need to add it into the state children.
                            if (!isLeaving || !_this2.props.leaveAnimation) return;

                            var nextChild = _extends({}, child, { leaving: true });
                            var nextChildIndex = index + numOfChildrenLeaving;

                            updatedChildren.splice(nextChildIndex, 0, nextChild);
                            numOfChildrenLeaving += 1;
                        });

                        return updatedChildren;
                    }
                }, {
                    key: 'prepForAnimation',
                    value: function prepForAnimation() {
                        var _this3 = this;

                        // Our animation prep consists of:
                        // - remove children that are leaving from the DOM flow, so that the new
                        //   layout can be accurately calculated,
                        // - update the placeholder container height, if needed, to ensure that
                        //   the parent's height doesn't collapse.

                        var _props = this.props,
                            leaveAnimation = _props.leaveAnimation,
                            maintainContainerHeight = _props.maintainContainerHeight,
                            getPosition = _props.getPosition;

                        // we need to make all leaving nodes "invisible" to the layout calculations
                        // that will take place in the next step (this.runAnimation).

                        if (leaveAnimation) {
                            var leavingChildren = this.state.children.filter(function (child) {
                                return child.leaving;
                            });

                            leavingChildren.forEach(function (leavingChild) {
                                var childData = _this3.getChildData(getKey(leavingChild));

                                // We need to take the items out of the "flow" of the document, so that
                                // its siblings can move to take its place.
                                if (childData.boundingBox) {
                                    (0, _domManipulation.removeNodeFromDOMFlow)(childData, _this3.props.verticalAlignment);
                                }
                            });

                            if (maintainContainerHeight && this.heightPlaceholderData.domNode) {
                                (0, _domManipulation.updateHeightPlaceholder)({
                                    domNode: this.heightPlaceholderData.domNode,
                                    parentData: this.parentData,
                                    getPosition: getPosition
                                });
                            }
                        }

                        // For all children not in the middle of entering or leaving,
                        // we need to reset the transition, so that the NEW shuffle starts from
                        // the right place.
                        this.state.children.forEach(function (child) {
                            var _getChildData = _this3.getChildData(getKey(child)),
                                domNode = _getChildData.domNode;

                            // Ignore children that don't render DOM nodes (eg. by returning null)


                            if (!domNode) {
                                return;
                            }

                            if (!child.entering && !child.leaving) {
                                (0, _domManipulation.applyStylesToDOMNode)({
                                    domNode: domNode,
                                    styles: {
                                        transition: ''
                                    }
                                });
                            }
                        });
                    }
                }, {
                    key: 'animateChild',
                    value: function animateChild(child, index) {
                        var _this4 = this;

                        var _getChildData2 = this.getChildData(getKey(child)),
                            domNode = _getChildData2.domNode;

                        if (!domNode) {
                            return;
                        }

                        // Apply the relevant style for this DOM node
                        // This is the offset from its actual DOM position.
                        // eg. if an item has been re-rendered 20px lower, we want to apply a
                        // style of 'transform: translate(-20px)', so that it appears to be where
                        // it started.
                        // In FLIP terminology, this is the 'Invert' stage.
                        (0, _domManipulation.applyStylesToDOMNode)({
                            domNode: domNode,
                            styles: this.computeInitialStyles(child)
                        });

                        // Start by invoking the onStart callback for this child.
                        if (this.props.onStart) this.props.onStart(child, domNode);

                        // Next, animate the item from it's artificially-offset position to its
                        // new, natural position.
                        requestAnimationFrame(function () {
                            requestAnimationFrame(function () {
                                // NOTE, RE: the double-requestAnimationFrame:
                                // Sadly, this is the most browser-compatible way to do this I've found.
                                // Essentially we need to set the initial styles outside of any request
                                // callbacks to avoid batching them. Then, a frame needs to pass with
                                // the styles above rendered. Then, on the second frame, we can apply
                                // our final styles to perform the animation.

                                // Our first order of business is to "undo" the styles applied in the
                                // previous frames, while also adding a `transition` property.
                                // This way, the item will smoothly transition from its old position
                                // to its new position.

                                // eslint-disable-next-line flowtype/require-variable-type
                                var styles = {
                                    transition: (0, _domManipulation.createTransitionString)(index, _this4.props),
                                    transform: '',
                                    opacity: ''
                                };

                                if (child.appearing && _this4.props.appearAnimation) {
                                    styles = _extends({}, styles, _this4.props.appearAnimation.to);
                                } else if (child.entering && _this4.props.enterAnimation) {
                                    styles = _extends({}, styles, _this4.props.enterAnimation.to);
                                } else if (child.leaving && _this4.props.leaveAnimation) {
                                    styles = _extends({}, styles, _this4.props.leaveAnimation.to);
                                }

                                // In FLIP terminology, this is the 'Play' stage.
                                (0, _domManipulation.applyStylesToDOMNode)({ domNode: domNode, styles: styles });
                            });
                        });

                        this.bindTransitionEndHandler(child);
                    }
                }, {
                    key: 'bindTransitionEndHandler',
                    value: function bindTransitionEndHandler(child) {
                        var _this5 = this;

                        var _getChildData3 = this.getChildData(getKey(child)),
                            domNode = _getChildData3.domNode;

                        if (!domNode) {
                            return;
                        }

                        // The onFinish callback needs to be bound to the transitionEnd event.
                        // We also need to unbind it when the transition completes, so this ugly
                        // inline function is required (we need it here so it closes over
                        // dependent variables `child` and `domNode`)
                        var transitionEndHandler = function transitionEndHandler(ev) {
                            // It's possible that this handler is fired not on our primary transition,
                            // but on a nested transition (eg. a hover effect). Ignore these cases.
                            if (ev.target !== domNode) return;

                            // Remove the 'transition' inline style we added. This is cleanup.
                            domNode.style.transition = '';

                            // Trigger any applicable onFinish/onFinishAll hooks
                            _this5.triggerFinishHooks(child, domNode);

                            domNode.removeEventListener(transitionEnd, transitionEndHandler);

                            if (child.leaving) {
                                _this5.removeChildData(getKey(child));
                            }
                        };

                        domNode.addEventListener(transitionEnd, transitionEndHandler);
                    }
                }, {
                    key: 'triggerFinishHooks',
                    value: function triggerFinishHooks(child, domNode) {
                        var _this6 = this;

                        if (this.props.onFinish) this.props.onFinish(child, domNode);

                        // Reduce the number of children we need to animate by 1,
                        // so that we can tell when all children have finished.
                        this.remainingAnimations -= 1;

                        if (this.remainingAnimations === 0) {
                            // Remove any items from the DOM that have left, and reset `entering`.
                            var nextChildren = this.state.children.filter(function (_ref3) {
                                var leaving = _ref3.leaving;
                                return !leaving;
                            }).map(function (item) {
                                return _extends({}, item, {
                                    appearing: false,
                                    entering: false
                                });
                            });

                            this.setState({ children: nextChildren }, function () {
                                if (typeof _this6.props.onFinishAll === 'function') {
                                    _this6.callChildrenHook(_this6.props.onFinishAll);
                                }

                                // Reset our variables for the next iteration
                                _this6.childrenToAnimate = [];
                            });

                            // If the placeholder was holding the container open while elements were
                            // leaving, we we can now set its height to zero.
                            if (this.heightPlaceholderData.domNode) {
                                this.heightPlaceholderData.domNode.style.height = '0';
                            }
                        }
                    }
                }, {
                    key: 'callChildrenHook',
                    value: function callChildrenHook(hook) {
                        var _this7 = this;

                        var elements = [];
                        var domNodes = [];

                        this.childrenToAnimate.forEach(function (childKey) {
                            // If this was an exit animation, the child may no longer exist.
                            // If so, skip it.
                            var child = _this7.findChildByKey(childKey);

                            if (!child) {
                                return;
                            }

                            elements.push(child);

                            if (_this7.hasChildData(childKey)) {
                                domNodes.push(_this7.getChildData(childKey).domNode);
                            }
                        });

                        hook(elements, domNodes);
                    }
                }, {
                    key: 'updateBoundingBoxCaches',
                    value: function updateBoundingBoxCaches() {
                        var _this8 = this;

                        // This is the ONLY place that parentData and childrenData's
                        // bounding boxes are updated. They will be calculated at other times
                        // to be compared to this value, but it's important that the cache is
                        // updated once per update.
                        var parentDomNode = this.parentData.domNode;

                        if (!parentDomNode) {
                            return;
                        }

                        this.parentData.boundingBox = this.props.getPosition(parentDomNode);

                        this.state.children.forEach(function (child) {
                            var childKey = getKey(child);

                            // It is possible that a child does not have a `key` property;
                            // Ignore these children, they don't need to be moved.
                            if (!childKey) {
                                return;
                            }

                            // In very rare circumstances, for reasons unknown, the ref is never
                            // populated for certain children. In this case, avoid doing this update.
                            // see: https://github.com/joshwcomeau/react-flip-move/pull/91
                            if (!_this8.hasChildData(childKey)) {
                                return;
                            }

                            var childData = _this8.getChildData(childKey);

                            // If the child element returns null, we need to avoid trying to
                            // account for it
                            if (!childData.domNode || !child) {
                                return;
                            }

                            _this8.setChildData(childKey, {
                                boundingBox: (0, _domManipulation.getRelativeBoundingBox)({
                                    childDomNode: childData.domNode,
                                    parentDomNode: parentDomNode,
                                    getPosition: _this8.props.getPosition
                                })
                            });
                        });
                    }
                }, {
                    key: 'computeInitialStyles',
                    value: function computeInitialStyles(child) {
                        if (child.appearing) {
                            return this.props.appearAnimation ? this.props.appearAnimation.from : {};
                        } else if (child.entering) {
                            if (!this.props.enterAnimation) {
                                return {};
                            }
                            // If this child was in the middle of leaving, it still has its
                            // absolute positioning styles applied. We need to undo those.
                            return _extends({
                                position: '',
                                top: '',
                                left: '',
                                right: '',
                                bottom: ''
                            }, this.props.enterAnimation.from);
                        } else if (child.leaving) {
                            return this.props.leaveAnimation ? this.props.leaveAnimation.from : {};
                        }

                        var childData = this.getChildData(getKey(child));
                        var childDomNode = childData.domNode;
                        var childBoundingBox = childData.boundingBox;
                        var parentBoundingBox = this.parentData.boundingBox;

                        if (!childDomNode) {
                            return {};
                        }

                        var _getPositionDelta3 = (0, _domManipulation.getPositionDelta)({
                                childDomNode: childDomNode,
                                childBoundingBox: childBoundingBox,
                                parentBoundingBox: parentBoundingBox,
                                getPosition: this.props.getPosition
                            }),
                            _getPositionDelta4 = _slicedToArray(_getPositionDelta3, 2),
                            dX = _getPositionDelta4[0],
                            dY = _getPositionDelta4[1];

                        return {
                            transform: 'translate(' + dX + 'px, ' + dY + 'px)'
                        };
                    }

                    // eslint-disable-next-line class-methods-use-this

                }, {
                    key: 'isAnimationDisabled',
                    value: function isAnimationDisabled(props) {
                        // If the component is explicitly passed a `disableAllAnimations` flag,
                        // we can skip this whole process. Similarly, if all of the numbers have
                        // been set to 0, there is no point in trying to animate; doing so would
                        // only cause a flicker (and the intent is probably to disable animations)
                        // We can also skip this rigamarole if there's no browser support for it.
                        return noBrowserSupport || props.disableAllAnimations || props.duration === 0 && props.delay === 0 && props.staggerDurationBy === 0 && props.staggerDelayBy === 0;
                    }
                }, {
                    key: 'findChildByKey',
                    value: function findChildByKey(key) {
                        return this.state.children.find(function (child) {
                            return getKey(child) === key;
                        });
                    }
                }, {
                    key: 'hasChildData',
                    value: function hasChildData(key) {
                        // Object has some built-in properties on its prototype, such as toString.  hasOwnProperty makes
                        // sure that key is present on childrenData itself, not on its prototype.
                        return Object.prototype.hasOwnProperty.call(this.childrenData, key);
                    }
                }, {
                    key: 'getChildData',
                    value: function getChildData(key) {
                        return this.hasChildData(key) ? this.childrenData[key] : {};
                    }
                }, {
                    key: 'setChildData',
                    value: function setChildData(key, data) {
                        this.childrenData[key] = _extends({}, this.getChildData(key), data);
                    }
                }, {
                    key: 'removeChildData',
                    value: function removeChildData(key) {
                        delete this.childrenData[key];
                    }
                }, {
                    key: 'createHeightPlaceholder',
                    value: function createHeightPlaceholder() {
                        var _this9 = this;

                        var typeName = this.props.typeName;

                        // If requested, create an invisible element at the end of the list.
                        // Its height will be modified to prevent the container from collapsing
                        // prematurely.

                        var isContainerAList = typeName === 'ul' || typeName === 'ol';
                        var placeholderType = isContainerAList ? 'li' : 'div';

                        return _react2.default.createElement(placeholderType, {
                            key: 'height-placeholder',
                            ref: function ref(domNode) {
                                _this9.heightPlaceholderData.domNode = domNode;
                            },
                            style: { visibility: 'hidden', height: 0 }
                        });
                    }
                }, {
                    key: 'childrenWithRefs',
                    value: function childrenWithRefs() {
                        var _this10 = this;

                        // We need to clone the provided children, capturing a reference to the
                        // underlying DOM node. Flip Move needs to use the React escape hatches to
                        // be able to do its calculations.
                        return this.state.children.map(function (child) {
                            return _react2.default.cloneElement(child.element, {
                                ref: function ref(element) {
                                    // Stateless Functional Components are not supported by FlipMove,
                                    // because they don't have instances.
                                    if (!element) {
                                        return;
                                    }

                                    var domNode = (0, _domManipulation.getNativeNode)(element);
                                    _this10.setChildData(getKey(child), { domNode: domNode });
                                }
                            });
                        });
                    }
                }, {
                    key: 'render',
                    value: function render() {
                        var _this11 = this;

                        var _props2 = this.props,
                            typeName = _props2.typeName,
                            delegated = _props2.delegated,
                            leaveAnimation = _props2.leaveAnimation,
                            maintainContainerHeight = _props2.maintainContainerHeight;


                        var props = _extends({}, delegated, {
                            ref: function ref(node) {
                                _this11.parentData.domNode = node;
                            }
                        });

                        var children = this.childrenWithRefs();
                        if (leaveAnimation && maintainContainerHeight) {
                            children.push(this.createHeightPlaceholder());
                        }

                        return _react2.default.createElement(typeName, props, children);
                    }
                }]);

                return FlipMove;
            }(_react.Component);

            exports.default = (0, _propConverter2.default)(FlipMove);
            module.exports = exports['default'];

            /***/ }),
        /* 133 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


// @noflow
            /**
             * React Flip Move - Polyfills
             * (c) 2016-present Joshua Comeau
             */

            /* eslint-disable */

            if (!Array.prototype.find) {
                Array.prototype.find = function (predicate) {
                    if (this === null) {
                        throw new TypeError('Array.prototype.find called on null or undefined');
                    }
                    if (typeof predicate !== 'function') {
                        throw new TypeError('predicate must be a function');
                    }
                    var list = Object(this);
                    var length = list.length >>> 0;
                    var thisArg = arguments[1];
                    var value = void 0;

                    for (var i = 0; i < length; i++) {
                        value = list[i];
                        if (predicate.call(thisArg, value, i, list)) {
                            return value;
                        }
                    }
                    return undefined;
                };
            }

            if (!Array.prototype.every) {
                Array.prototype.every = function (callbackfn, thisArg) {
                    'use strict';

                    var T, k;

                    if (this == null) {
                        throw new TypeError('this is null or not defined');
                    }

                    var O = Object(this);
                    var len = O.length >>> 0;

                    if (typeof callbackfn !== 'function') {
                        throw new TypeError();
                    }

                    if (arguments.length > 1) {
                        T = thisArg;
                    }

                    k = 0;

                    while (k < len) {

                        var kValue;

                        if (k in O) {
                            kValue = O[k];

                            var testResult = callbackfn.call(T, kValue, k, O);

                            if (!testResult) {
                                return false;
                            }
                        }
                        k++;
                    }
                    return true;
                };
            }

            if (!Array.isArray) {
                Array.isArray = function (arg) {
                    return Object.prototype.toString.call(arg) === '[object Array]';
                };
            }

            /***/ }),
        /* 134 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";
            /* WEBPACK VAR INJECTION */(function(process) {

                Object.defineProperty(exports, "__esModule", {
                    value: true
                });

                var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

                var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

                var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

                var _react = __webpack_require__(4);

                var _react2 = _interopRequireDefault(_react);

                var _errorMessages = __webpack_require__(135);

                var _enterLeavePresets = __webpack_require__(136);

                var _helpers = __webpack_require__(48);

                function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

                function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

                function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }

                function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
                /**
                 * React Flip Move | propConverter
                 * (c) 2016-present Joshua Comeau
                 *
                 * Abstracted away a bunch of the messy business with props.
                 *   - props flow types and defaultProps
                 *   - Type conversion (We accept 'string' and 'number' values for duration,
                 *     delay, and other fields, but we actually need them to be ints.)
                 *   - Children conversion (we need the children to be an array. May not always
                 *     be, if a single child is passed in.)
                 *   - Resolving animation presets into their base CSS styles
                 */
                /* eslint-disable block-scoped-var */

                var nodeEnv = void 0;
                try {
                    nodeEnv = process.env.NODE_ENV;
                } catch (e) {
                    nodeEnv = 'development';
                }

                function propConverter(ComposedComponent) {
                    var _class, _temp;

                    return _temp = _class = function (_Component) {
                        _inherits(FlipMovePropConverter, _Component);

                        function FlipMovePropConverter() {
                            _classCallCheck(this, FlipMovePropConverter);

                            return _possibleConstructorReturn(this, (FlipMovePropConverter.__proto__ || Object.getPrototypeOf(FlipMovePropConverter)).apply(this, arguments));
                        }

                        _createClass(FlipMovePropConverter, [{
                            key: 'checkForStatelessFunctionalComponents',


                            // eslint-disable-next-line class-methods-use-this
                            value: function checkForStatelessFunctionalComponents(children) {
                                // Skip all console warnings in production.
                                // Bail early, to avoid unnecessary work.
                                if (nodeEnv === 'production') {
                                    return;
                                }

                                // FlipMove does not support stateless functional components.
                                // Check to see if any supplied components won't work.
                                // If the child doesn't have a key, it means we aren't animating it.
                                // It's allowed to be an SFC, since we ignore it.
                                var childArray = _react.Children.toArray(children);
                                var noStateless = childArray.every(function (child) {
                                    return !(0, _helpers.isElementAnSFC)(child) || typeof child.key === 'undefined';
                                });

                                if (!noStateless) {
                                    (0, _errorMessages.statelessFunctionalComponentSupplied)();
                                }
                            }
                        }, {
                            key: 'convertProps',
                            value: function convertProps(props) {
                                var workingProps = {
                                    // explicitly bypass the props that don't need conversion
                                    children: props.children,
                                    easing: props.easing,
                                    onStart: props.onStart,
                                    onFinish: props.onFinish,
                                    onStartAll: props.onStartAll,
                                    onFinishAll: props.onFinishAll,
                                    typeName: props.typeName,
                                    disableAllAnimations: props.disableAllAnimations,
                                    getPosition: props.getPosition,
                                    maintainContainerHeight: props.maintainContainerHeight,
                                    verticalAlignment: props.verticalAlignment,

                                    // Do string-to-int conversion for all timing-related props
                                    duration: this.convertTimingProp('duration'),
                                    delay: this.convertTimingProp('delay'),
                                    staggerDurationBy: this.convertTimingProp('staggerDurationBy'),
                                    staggerDelayBy: this.convertTimingProp('staggerDelayBy'),

                                    // Our enter/leave animations can be specified as boolean (default or
                                    // disabled), string (preset name), or object (actual animation values).
                                    // Let's standardize this so that they're always objects
                                    appearAnimation: this.convertAnimationProp(props.appearAnimation, _enterLeavePresets.appearPresets),
                                    enterAnimation: this.convertAnimationProp(props.enterAnimation, _enterLeavePresets.enterPresets),
                                    leaveAnimation: this.convertAnimationProp(props.leaveAnimation, _enterLeavePresets.leavePresets),

                                    delegated: {}
                                };

                                this.checkForStatelessFunctionalComponents(workingProps.children);

                                // Accept `disableAnimations`, but add a deprecation warning
                                if (typeof props.disableAnimations !== 'undefined') {
                                    if (nodeEnv !== 'production') {
                                        (0, _errorMessages.deprecatedDisableAnimations)();
                                    }

                                    workingProps.disableAllAnimations = props.disableAnimations;
                                }

                                // Gather any additional props;
                                // they will be delegated to the ReactElement created.
                                var primaryPropKeys = Object.keys(workingProps);
                                var delegatedProps = (0, _helpers.omit)(this.props, primaryPropKeys);

                                // The FlipMove container element needs to have a non-static position.
                                // We use `relative` by default, but it can be overridden by the user.
                                // Now that we're delegating props, we need to merge this in.
                                delegatedProps.style = _extends({
                                    position: 'relative'
                                }, delegatedProps.style);

                                workingProps.delegated = delegatedProps;

                                return workingProps;
                            }
                        }, {
                            key: 'convertTimingProp',
                            value: function convertTimingProp(prop) {
                                var rawValue = this.props[prop];

                                var value = typeof rawValue === 'number' ? rawValue : parseInt(rawValue, 10);

                                if (isNaN(value)) {
                                    var defaultValue = FlipMovePropConverter.defaultProps[prop];

                                    if (nodeEnv !== 'production') {
                                        (0, _errorMessages.invalidTypeForTimingProp)({
                                            prop: prop,
                                            value: rawValue,
                                            defaultValue: defaultValue
                                        });
                                    }

                                    return defaultValue;
                                }

                                return value;
                            }

                            // eslint-disable-next-line class-methods-use-this

                        }, {
                            key: 'convertAnimationProp',
                            value: function convertAnimationProp(animation, presets) {
                                switch (typeof animation === 'undefined' ? 'undefined' : _typeof(animation)) {
                                    case 'boolean':
                                    {
                                        // If it's true, we want to use the default preset.
                                        // If it's false, we want to use the 'none' preset.
                                        return presets[animation ? _enterLeavePresets.defaultPreset : _enterLeavePresets.disablePreset];
                                    }

                                    case 'string':
                                    {
                                        var presetKeys = Object.keys(presets);

                                        if (presetKeys.indexOf(animation) === -1) {
                                            if (nodeEnv !== 'production') {
                                                (0, _errorMessages.invalidEnterLeavePreset)({
                                                    value: animation,
                                                    acceptableValues: presetKeys.join(', '),
                                                    defaultValue: _enterLeavePresets.defaultPreset
                                                });
                                            }

                                            return presets[_enterLeavePresets.defaultPreset];
                                        }

                                        return presets[animation];
                                    }

                                    default:
                                    {
                                        return animation;
                                    }
                                }
                            }
                        }, {
                            key: 'render',
                            value: function render() {
                                return _react2.default.createElement(ComposedComponent, this.convertProps(this.props));
                            }
                        }]);

                        return FlipMovePropConverter;
                    }(_react.Component), _class.defaultProps = {
                        easing: 'ease-in-out',
                        duration: 350,
                        delay: 0,
                        staggerDurationBy: 0,
                        staggerDelayBy: 0,
                        typeName: 'div',
                        enterAnimation: _enterLeavePresets.defaultPreset,
                        leaveAnimation: _enterLeavePresets.defaultPreset,
                        disableAllAnimations: false,
                        getPosition: function getPosition(node) {
                            return node.getBoundingClientRect();
                        },
                        maintainContainerHeight: false,
                        verticalAlignment: 'top'
                    }, _temp;
                }

                exports.default = propConverter;
                module.exports = exports['default'];
                /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))

            /***/ }),
        /* 135 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            Object.defineProperty(exports, "__esModule", {
                value: true
            });


            function warnOnce(msg) {
                var hasWarned = false;
                return function () {
                    if (!hasWarned) {
                        console.warn(msg);
                        hasWarned = true;
                    }
                };
            }
            var statelessFunctionalComponentSupplied = exports.statelessFunctionalComponentSupplied = warnOnce('\n>> Error, via react-flip-move <<\n\nYou provided a stateless functional component as a child to <FlipMove>. Unfortunately, SFCs aren\'t supported, because Flip Move needs access to the backing instances via refs, and SFCs don\'t have a public instance that holds that info.\n\nPlease wrap your components in a native element (eg. <div>), or a non-functional component.\n');

            var invalidTypeForTimingProp = exports.invalidTypeForTimingProp = function invalidTypeForTimingProp(args) {
                return console.error('\n>> Error, via react-flip-move <<\n\nThe prop you provided for \'' + args.prop + '\' is invalid. It needs to be a positive integer, or a string that can be resolved to a number. The value you provided is \'' + args.value + '\'.\n\nAs a result,  the default value for this parameter will be used, which is \'' + args.defaultValue + '\'.\n');
            };

            var deprecatedDisableAnimations = exports.deprecatedDisableAnimations = warnOnce('\n>> Warning, via react-flip-move <<\n\nThe \'disableAnimations\' prop you provided is deprecated. Please switch to use \'disableAllAnimations\'.\n\nThis will become a silent error in future versions of react-flip-move.\n');

            var invalidEnterLeavePreset = exports.invalidEnterLeavePreset = function invalidEnterLeavePreset(args) {
                return console.error('\n>> Error, via react-flip-move <<\n\nThe enter/leave preset you provided is invalid. We don\'t currently have a \'' + args.value + ' preset.\'\n\nAcceptable values are ' + args.acceptableValues + '. The default value of \'' + args.defaultValue + '\' will be used.\n');
            };

            /***/ }),
        /* 136 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            var enterPresets = exports.enterPresets = {
                elevator: {
                    from: { transform: 'scale(0)', opacity: '0' },
                    to: { transform: '', opacity: '' }
                },
                fade: {
                    from: { opacity: '0' },
                    to: { opacity: '' }
                },
                accordionVertical: {
                    from: { transform: 'scaleY(0)', transformOrigin: 'center top' },
                    to: { transform: '', transformOrigin: 'center top' }
                },
                accordionHorizontal: {
                    from: { transform: 'scaleX(0)', transformOrigin: 'left center' },
                    to: { transform: '', transformOrigin: 'left center' }
                },
                none: null
            };
            /**
             * React Flip Move | enterLeavePresets
             * (c) 2016-present Joshua Comeau
             *
             * This contains the master list of presets available for enter/leave animations,
             * along with the mapping between preset and styles.
             */
            var leavePresets = exports.leavePresets = {
                elevator: {
                    from: { transform: 'scale(1)', opacity: '1' },
                    to: { transform: 'scale(0)', opacity: '0' }
                },
                fade: {
                    from: { opacity: '1' },
                    to: { opacity: '0' }
                },
                accordionVertical: {
                    from: { transform: 'scaleY(1)', transformOrigin: 'center top' },
                    to: { transform: 'scaleY(0)', transformOrigin: 'center top' }
                },
                accordionHorizontal: {
                    from: { transform: 'scaleX(1)', transformOrigin: 'left center' },
                    to: { transform: 'scaleX(0)', transformOrigin: 'left center' }
                },
                none: null
            };

// For now, appearPresets will be identical to enterPresets.
// Assigning a custom export in case we ever want to add appear-specific ones.
            var appearPresets = exports.appearPresets = enterPresets;

// Embarrassingly enough, v2.0 launched with typo'ed preset names.
// To avoid penning a new major version over something so inconsequential,
// we're supporting both spellings. In a future version, these alternatives
// may be deprecated.
// $FlowFixMe
            enterPresets.accordianVertical = enterPresets.accordionVertical;
// $FlowFixMe
            enterPresets.accordianHorizontal = enterPresets.accordionHorizontal;
// $FlowFixMe
            leavePresets.accordianVertical = leavePresets.accordionVertical;
// $FlowFixMe
            leavePresets.accordianHorizontal = leavePresets.accordionHorizontal;

            var defaultPreset = exports.defaultPreset = 'elevator';
            var disablePreset = exports.disablePreset = 'none';

            /***/ }),
        /* 137 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            exports.createTransitionString = exports.getNativeNode = exports.updateHeightPlaceholder = exports.removeNodeFromDOMFlow = exports.getPositionDelta = exports.getRelativeBoundingBox = undefined;

            var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
            /**
             * React Flip Move
             * (c) 2016-present Joshua Comeau
             *
             * These methods read from and write to the DOM.
             * They almost always have side effects, and will hopefully become the
             * only spot in the codebase with impure functions.
             */


            exports.applyStylesToDOMNode = applyStylesToDOMNode;
            exports.whichTransitionEvent = whichTransitionEvent;

            var _reactDom = __webpack_require__(4);

            var _helpers = __webpack_require__(48);

            function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

            function applyStylesToDOMNode(_ref) {
                var domNode = _ref.domNode,
                    styles = _ref.styles;

                // Can't just do an object merge because domNode.styles is no regular object.
                // Need to do it this way for the engine to fire its `set` listeners.
                Object.keys(styles).forEach(function (key) {
                    domNode.style.setProperty((0, _helpers.hyphenate)(key), styles[key]);
                });
            }

// Modified from Modernizr
            function whichTransitionEvent() {
                var transitions = {
                    transition: 'transitionend',
                    '-o-transition': 'oTransitionEnd',
                    '-moz-transition': 'transitionend',
                    '-webkit-transition': 'webkitTransitionEnd'
                };

                // If we're running in a browserless environment (eg. SSR), it doesn't apply.
                // Return a placeholder string, for consistent type return.
                if (typeof document === 'undefined') return '';

                var el = document.createElement('fakeelement');

                var match = Object.keys(transitions).find(function (t) {
                    return el.style.getPropertyValue(t) !== undefined;
                });

                // If no `transition` is found, we must be running in a browser so ancient,
                // React itself won't run. Return an empty string, for consistent type return
                return match ? transitions[match] : '';
            }

            var getRelativeBoundingBox = exports.getRelativeBoundingBox = function getRelativeBoundingBox(_ref2) {
                var childDomNode = _ref2.childDomNode,
                    parentDomNode = _ref2.parentDomNode,
                    getPosition = _ref2.getPosition;

                var parentBox = getPosition(parentDomNode);

                var _getPosition = getPosition(childDomNode),
                    top = _getPosition.top,
                    left = _getPosition.left,
                    right = _getPosition.right,
                    bottom = _getPosition.bottom,
                    width = _getPosition.width,
                    height = _getPosition.height;

                return {
                    top: top - parentBox.top,
                    left: left - parentBox.left,
                    right: parentBox.right - right,
                    bottom: parentBox.bottom - bottom,
                    width: width,
                    height: height
                };
            };

            /** getPositionDelta
             * This method returns the delta between two bounding boxes, to figure out
             * how many pixels on each axis the element has moved.
             *
             */
            var getPositionDelta = exports.getPositionDelta = function getPositionDelta(_ref3) {
                var childDomNode = _ref3.childDomNode,
                    childBoundingBox = _ref3.childBoundingBox,
                    parentBoundingBox = _ref3.parentBoundingBox,
                    getPosition = _ref3.getPosition;

                // TEMP: A mystery bug is sometimes causing unnecessary boundingBoxes to
                var defaultBox = { top: 0, left: 0, right: 0, bottom: 0, height: 0, width: 0 };

                // Our old box is its last calculated position, derived on mount or at the
                // start of the previous animation.
                var oldRelativeBox = childBoundingBox || defaultBox;
                var parentBox = parentBoundingBox || defaultBox;

                // Our new box is the new final resting place: Where we expect it to wind up
                // after the animation. First we get the box in absolute terms (AKA relative
                // to the viewport), and then we calculate its relative box (relative to the
                // parent container)
                var newAbsoluteBox = getPosition(childDomNode);
                var newRelativeBox = {
                    top: newAbsoluteBox.top - parentBox.top,
                    left: newAbsoluteBox.left - parentBox.left
                };

                return [oldRelativeBox.left - newRelativeBox.left, oldRelativeBox.top - newRelativeBox.top];
            };

            /** removeNodeFromDOMFlow
             * This method does something very sneaky: it removes a DOM node from the
             * document flow, but without actually changing its on-screen position.
             *
             * It works by calculating where the node is, and then applying styles
             * so that it winds up being positioned absolutely, but in exactly the
             * same place.
             *
             * This is a vital part of the FLIP technique.
             */
            var removeNodeFromDOMFlow = exports.removeNodeFromDOMFlow = function removeNodeFromDOMFlow(childData, verticalAlignment) {
                var domNode = childData.domNode,
                    boundingBox = childData.boundingBox;


                if (!domNode || !boundingBox) {
                    return;
                }

                // For this to work, we have to offset any given `margin`.
                var computed = window.getComputedStyle(domNode);

                // We need to clean up margins, by converting and removing suffix:
                // eg. '21px' -> 21
                var marginAttrs = ['margin-top', 'margin-left', 'margin-right'];
                var margins = marginAttrs.reduce(function (acc, margin) {
                    var propertyVal = computed.getPropertyValue(margin);

                    return _extends({}, acc, _defineProperty({}, margin, Number(propertyVal.replace('px', ''))));
                }, {});

                // If we're bottom-aligned, we need to add the height of the child to its
                // top offset. This is because, when the container is bottom-aligned, its
                // height shrinks from the top, not the bottom. We're removing this node
                // from the flow, so the top is going to drop by its height.
                var topOffset = verticalAlignment === 'bottom' ? boundingBox.top - boundingBox.height : boundingBox.top;

                var styles = {
                    position: 'absolute',
                    top: topOffset - margins['margin-top'] + 'px',
                    left: boundingBox.left - margins['margin-left'] + 'px',
                    right: boundingBox.right - margins['margin-right'] + 'px'
                };

                applyStylesToDOMNode({ domNode: domNode, styles: styles });
            };

            /** updateHeightPlaceholder
             * An optional property to FlipMove is a `maintainContainerHeight` boolean.
             * This property creates a node that fills space, so that the parent
             * container doesn't collapse when its children are removed from the
             * document flow.
             */
            var updateHeightPlaceholder = exports.updateHeightPlaceholder = function updateHeightPlaceholder(_ref4) {
                var domNode = _ref4.domNode,
                    parentData = _ref4.parentData,
                    getPosition = _ref4.getPosition;

                var parentDomNode = parentData.domNode;
                var parentBoundingBox = parentData.boundingBox;

                if (!parentDomNode || !parentBoundingBox) {
                    return;
                }

                // We need to find the height of the container *without* the placeholder.
                // Since it's possible that the placeholder might already be present,
                // we first set its height to 0.
                // This allows the container to collapse down to the size of just its
                // content (plus container padding or borders if any).
                applyStylesToDOMNode({ domNode: domNode, styles: { height: '0' } });

                // Find the distance by which the container would be collapsed by elements
                // leaving. We compare the freshly-available parent height with the original,
                // cached container height.
                var originalParentHeight = parentBoundingBox.height;
                var collapsedParentHeight = getPosition(parentDomNode).height;
                var reductionInHeight = originalParentHeight - collapsedParentHeight;

                // If the container has become shorter, update the padding element's
                // height to take up the difference. Otherwise set its height to zero,
                // so that it has no effect.
                var styles = {
                    height: reductionInHeight > 0 ? reductionInHeight + 'px' : '0'
                };

                applyStylesToDOMNode({ domNode: domNode, styles: styles });
            };

            var getNativeNode = exports.getNativeNode = function getNativeNode(element) {
                // When running in a windowless environment, abort!
                if (typeof HTMLElement === 'undefined') {
                    return null;
                }

                // `element` may already be a native node.
                if (element instanceof HTMLElement) {
                    return element;
                }

                // While ReactDOM's `findDOMNode` is discouraged, it's the only
                // publicly-exposed way to find the underlying DOM node for
                // composite components.
                var foundNode = (0, _reactDom.findDOMNode)(element);

                if (!(foundNode instanceof HTMLElement)) {
                    // Text nodes are not supported
                    return null;
                }

                return foundNode;
            };

            var createTransitionString = exports.createTransitionString = function createTransitionString(index, props) {
                var delay = props.delay,
                    duration = props.duration;
                var staggerDurationBy = props.staggerDurationBy,
                    staggerDelayBy = props.staggerDelayBy,
                    easing = props.easing;


                delay += index * staggerDelayBy;
                duration += index * staggerDurationBy;

                var cssProperties = ['transform', 'opacity'];

                return cssProperties.map(function (prop) {
                    return prop + ' ' + duration + 'ms ' + easing + ' ' + delay + 'ms';
                }).join(', ');
            };

            /***/ }),
        /* 138 */
        /***/ (function(module, exports, __webpack_require__) {

            var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
             Autosize 3.0.21
             license: MIT
             http://www.jacklmoore.com/autosize
             */
            (function (global, factory) {
                if (true) {
                    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
                        __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
                            (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
                    __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
                } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') {
                    factory(exports, module);
                } else {
                    var mod = {
                        exports: {}
                    };
                    factory(mod.exports, mod);
                    global.autosize = mod.exports;
                }
            })(this, function (exports, module) {
                'use strict';

                var map = typeof Map === "function" ? new Map() : (function () {
                    var keys = [];
                    var values = [];

                    return {
                        has: function has(key) {
                            return keys.indexOf(key) > -1;
                        },
                        get: function get(key) {
                            return values[keys.indexOf(key)];
                        },
                        set: function set(key, value) {
                            if (keys.indexOf(key) === -1) {
                                keys.push(key);
                                values.push(value);
                            }
                        },
                        'delete': function _delete(key) {
                            var index = keys.indexOf(key);
                            if (index > -1) {
                                keys.splice(index, 1);
                                values.splice(index, 1);
                            }
                        }
                    };
                })();

                var createEvent = function createEvent(name) {
                    return new Event(name, { bubbles: true });
                };
                try {
                    new Event('test');
                } catch (e) {
                    // IE does not support `new Event()`
                    createEvent = function (name) {
                        var evt = document.createEvent('Event');
                        evt.initEvent(name, true, false);
                        return evt;
                    };
                }

                function assign(ta) {
                    if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return;

                    var heightOffset = null;
                    var clientWidth = ta.clientWidth;
                    var cachedHeight = null;

                    function init() {
                        var style = window.getComputedStyle(ta, null);

                        if (style.resize === 'vertical') {
                            ta.style.resize = 'none';
                        } else if (style.resize === 'both') {
                            ta.style.resize = 'horizontal';
                        }

                        if (style.boxSizing === 'content-box') {
                            heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));
                        } else {
                            heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
                        }
                        // Fix when a textarea is not on document body and heightOffset is Not a Number
                        if (isNaN(heightOffset)) {
                            heightOffset = 0;
                        }

                        update();
                    }

                    function changeOverflow(value) {
                        {
                            // Chrome/Safari-specific fix:
                            // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space
                            // made available by removing the scrollbar. The following forces the necessary text reflow.
                            var width = ta.style.width;
                            ta.style.width = '0px';
                            // Force reflow:
                            /* jshint ignore:start */
                            ta.offsetWidth;
                            /* jshint ignore:end */
                            ta.style.width = width;
                        }

                        ta.style.overflowY = value;
                    }

                    function getParentOverflows(el) {
                        var arr = [];

                        while (el && el.parentNode && el.parentNode instanceof Element) {
                            if (el.parentNode.scrollTop) {
                                arr.push({
                                    node: el.parentNode,
                                    scrollTop: el.parentNode.scrollTop
                                });
                            }
                            el = el.parentNode;
                        }

                        return arr;
                    }

                    function resize() {
                        var originalHeight = ta.style.height;
                        var overflows = getParentOverflows(ta);
                        var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240)

                        ta.style.height = 'auto';

                        var endHeight = ta.scrollHeight + heightOffset;

                        if (ta.scrollHeight === 0) {
                            // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM.
                            ta.style.height = originalHeight;
                            return;
                        }

                        ta.style.height = endHeight + 'px';

                        // used to check if an update is actually necessary on window.resize
                        clientWidth = ta.clientWidth;

                        // prevents scroll-position jumping
                        overflows.forEach(function (el) {
                            el.node.scrollTop = el.scrollTop;
                        });

                        if (docTop) {
                            document.documentElement.scrollTop = docTop;
                        }
                    }

                    function update() {
                        resize();

                        var styleHeight = Math.round(parseFloat(ta.style.height));
                        var computed = window.getComputedStyle(ta, null);

                        // Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box
                        var actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight;

                        // The actual height not matching the style height (set via the resize method) indicates that
                        // the max-height has been exceeded, in which case the overflow should be allowed.
                        if (actualHeight !== styleHeight) {
                            if (computed.overflowY === 'hidden') {
                                changeOverflow('scroll');
                                resize();
                                actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
                            }
                        } else {
                            // Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands.
                            if (computed.overflowY !== 'hidden') {
                                changeOverflow('hidden');
                                resize();
                                actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
                            }
                        }

                        if (cachedHeight !== actualHeight) {
                            cachedHeight = actualHeight;
                            var evt = createEvent('autosize:resized');
                            try {
                                ta.dispatchEvent(evt);
                            } catch (err) {
                                // Firefox will throw an error on dispatchEvent for a detached element
                                // https://bugzilla.mozilla.org/show_bug.cgi?id=889376
                            }
                        }
                    }

                    var pageResize = function pageResize() {
                        if (ta.clientWidth !== clientWidth) {
                            update();
                        }
                    };

                    var destroy = (function (style) {
                        window.removeEventListener('resize', pageResize, false);
                        ta.removeEventListener('input', update, false);
                        ta.removeEventListener('keyup', update, false);
                        ta.removeEventListener('autosize:destroy', destroy, false);
                        ta.removeEventListener('autosize:update', update, false);

                        Object.keys(style).forEach(function (key) {
                            ta.style[key] = style[key];
                        });

                        map['delete'](ta);
                    }).bind(ta, {
                        height: ta.style.height,
                        resize: ta.style.resize,
                        overflowY: ta.style.overflowY,
                        overflowX: ta.style.overflowX,
                        wordWrap: ta.style.wordWrap
                    });

                    ta.addEventListener('autosize:destroy', destroy, false);

                    // IE9 does not fire onpropertychange or oninput for deletions,
                    // so binding to onkeyup to catch most of those events.
                    // There is no way that I know of to detect something like 'cut' in IE9.
                    if ('onpropertychange' in ta && 'oninput' in ta) {
                        ta.addEventListener('keyup', update, false);
                    }

                    window.addEventListener('resize', pageResize, false);
                    ta.addEventListener('input', update, false);
                    ta.addEventListener('autosize:update', update, false);
                    ta.style.overflowX = 'hidden';
                    ta.style.wordWrap = 'break-word';

                    map.set(ta, {
                        destroy: destroy,
                        update: update
                    });

                    init();
                }

                function destroy(ta) {
                    var methods = map.get(ta);
                    if (methods) {
                        methods.destroy();
                    }
                }

                function update(ta) {
                    var methods = map.get(ta);
                    if (methods) {
                        methods.update();
                    }
                }

                var autosize = null;

                // Do nothing in Node.js environment and IE8 (or lower)
                if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') {
                    autosize = function (el) {
                        return el;
                    };
                    autosize.destroy = function (el) {
                        return el;
                    };
                    autosize.update = function (el) {
                        return el;
                    };
                } else {
                    autosize = function (el, options) {
                        if (el) {
                            Array.prototype.forEach.call(el.length ? el : [el], function (x) {
                                return assign(x, options);
                            });
                        }
                        return el;
                    };
                    autosize.destroy = function (el) {
                        if (el) {
                            Array.prototype.forEach.call(el.length ? el : [el], destroy);
                        }
                        return el;
                    };
                    autosize.update = function (el) {
                        if (el) {
                            Array.prototype.forEach.call(el.length ? el : [el], update);
                        }
                        return el;
                    };
                }

                module.exports = autosize;
            });

            /***/ }),
        /* 139 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            Object.defineProperty(exports, "__esModule", {
                value: true
            });

            exports.default = function (language) {
                return new _polyglot2.default({
                    phrases: i18nMap[language] || i18nMap.en,
                    locale: language
                });
            };

            var _polyglot = __webpack_require__(140);

            var _polyglot2 = _interopRequireDefault(_polyglot);

            var _zhCN = __webpack_require__(141);

            var _zhCN2 = _interopRequireDefault(_zhCN);

            var _zhTW = __webpack_require__(142);

            var _zhTW2 = _interopRequireDefault(_zhTW);

            var _en = __webpack_require__(143);

            var _en2 = _interopRequireDefault(_en);

            var _esES = __webpack_require__(144);

            var _esES2 = _interopRequireDefault(_esES);

            var _fr = __webpack_require__(145);

            var _fr2 = _interopRequireDefault(_fr);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            var i18nMap = {
                'zh': _zhCN2.default,
                'zh-CN': _zhCN2.default,
                'zh-TW': _zhTW2.default,
                'en': _en2.default,
                'es-ES': _esES2.default,
                'fr': _fr2.default
            };

            /***/ }),
        /* 140 */
        /***/ (function(module, exports, __webpack_require__) {

            var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;//     (c) 2012 Airbnb, Inc.
//
//     polyglot.js may be freely distributed under the terms of the BSD
//     license. For all licensing information, details, and documention:
//     http://airbnb.github.com/polyglot.js
//
//
// Polyglot.js is an I18n helper library written in JavaScript, made to
// work both in the browser and in Node. It provides a simple solution for
// interpolation and pluralization, based off of Airbnb's
// experience adding I18n functionality to its Backbone.js and Node apps.
//
// Polylglot is agnostic to your translation backend. It doesn't perform any
// translation; it simply gives you a way to manage translated phrases from
// your client- or server-side JavaScript application.
//


            (function(root, factory) {
                if (true) {
                    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
                        return factory(root);
                    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
                    __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
                } else if (typeof exports === 'object') {
                    module.exports = factory(root);
                } else {
                    root.Polyglot = factory(root);
                }
            }(this, function(root) {
                'use strict';

                // ### Polyglot class constructor
                function Polyglot(options) {
                    options = options || {};
                    this.phrases = {};
                    this.extend(options.phrases || {});
                    this.currentLocale = options.locale || 'en';
                    this.allowMissing = !!options.allowMissing;
                    this.warn = options.warn || warn;
                }

                // ### Version
                Polyglot.VERSION = '0.4.3';

                // ### polyglot.locale([locale])
                //
                // Get or set locale. Internally, Polyglot only uses locale for pluralization.
                Polyglot.prototype.locale = function(newLocale) {
                    if (newLocale) this.currentLocale = newLocale;
                    return this.currentLocale;
                };

                // ### polyglot.extend(phrases)
                //
                // Use `extend` to tell Polyglot how to translate a given key.
                //
                //     polyglot.extend({
                //       "hello": "Hello",
                //       "hello_name": "Hello, %{name}"
                //     });
                //
                // The key can be any string.  Feel free to call `extend` multiple times;
                // it will override any phrases with the same key, but leave existing phrases
                // untouched.
                //
                // It is also possible to pass nested phrase objects, which get flattened
                // into an object with the nested keys concatenated using dot notation.
                //
                //     polyglot.extend({
                //       "nav": {
                //         "hello": "Hello",
                //         "hello_name": "Hello, %{name}",
                //         "sidebar": {
                //           "welcome": "Welcome"
                //         }
                //       }
                //     });
                //
                //     console.log(polyglot.phrases);
                //     // {
                //     //   'nav.hello': 'Hello',
                //     //   'nav.hello_name': 'Hello, %{name}',
                //     //   'nav.sidebar.welcome': 'Welcome'
                //     // }
                //
                // `extend` accepts an optional second argument, `prefix`, which can be used
                // to prefix every key in the phrases object with some string, using dot
                // notation.
                //
                //     polyglot.extend({
                //       "hello": "Hello",
                //       "hello_name": "Hello, %{name}"
                //     }, "nav");
                //
                //     console.log(polyglot.phrases);
                //     // {
                //     //   'nav.hello': 'Hello',
                //     //   'nav.hello_name': 'Hello, %{name}'
                //     // }
                //
                // This feature is used internally to support nested phrase objects.
                Polyglot.prototype.extend = function(morePhrases, prefix) {
                    var phrase;

                    for (var key in morePhrases) {
                        if (morePhrases.hasOwnProperty(key)) {
                            phrase = morePhrases[key];
                            if (prefix) key = prefix + '.' + key;
                            if (typeof phrase === 'object') {
                                this.extend(phrase, key);
                            } else {
                                this.phrases[key] = phrase;
                            }
                        }
                    }
                };

                // ### polyglot.clear()
                //
                // Clears all phrases. Useful for special cases, such as freeing
                // up memory if you have lots of phrases but no longer need to
                // perform any translation. Also used internally by `replace`.
                Polyglot.prototype.clear = function() {
                    this.phrases = {};
                };

                // ### polyglot.replace(phrases)
                //
                // Completely replace the existing phrases with a new set of phrases.
                // Normally, just use `extend` to add more phrases, but under certain
                // circumstances, you may want to make sure no old phrases are lying around.
                Polyglot.prototype.replace = function(newPhrases) {
                    this.clear();
                    this.extend(newPhrases);
                };


                // ### polyglot.t(key, options)
                //
                // The most-used method. Provide a key, and `t` will return the
                // phrase.
                //
                //     polyglot.t("hello");
                //     => "Hello"
                //
                // The phrase value is provided first by a call to `polyglot.extend()` or
                // `polyglot.replace()`.
                //
                // Pass in an object as the second argument to perform interpolation.
                //
                //     polyglot.t("hello_name", {name: "Spike"});
                //     => "Hello, Spike"
                //
                // If you like, you can provide a default value in case the phrase is missing.
                // Use the special option key "_" to specify a default.
                //
                //     polyglot.t("i_like_to_write_in_language", {
                //       _: "I like to write in %{language}.",
                //       language: "JavaScript"
                //     });
                //     => "I like to write in JavaScript."
                //
                Polyglot.prototype.t = function(key, options) {
                    var phrase, result;
                    options = options == null ? {} : options;
                    // allow number as a pluralization shortcut
                    if (typeof options === 'number') {
                        options = {smart_count: options};
                    }
                    if (typeof this.phrases[key] === 'string') {
                        phrase = this.phrases[key];
                    } else if (typeof options._ === 'string') {
                        phrase = options._;
                    } else if (this.allowMissing) {
                        phrase = key;
                    } else {
                        this.warn('Missing translation for key: "'+key+'"');
                        result = key;
                    }
                    if (typeof phrase === 'string') {
                        options = clone(options);
                        result = choosePluralForm(phrase, this.currentLocale, options.smart_count);
                        result = interpolate(result, options);
                    }
                    return result;
                };


                // ### polyglot.has(key)
                //
                // Check if polyglot has a translation for given key
                Polyglot.prototype.has = function(key) {
                    return key in this.phrases;
                };


                // #### Pluralization methods
                // The string that separates the different phrase possibilities.
                var delimeter = '||||';

                // Mapping from pluralization group plural logic.
                var pluralTypes = {
                    chinese:   function(n) { return 0; },
                    german:    function(n) { return n !== 1 ? 1 : 0; },
                    french:    function(n) { return n > 1 ? 1 : 0; },
                    russian:   function(n) { return n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2; },
                    czech:     function(n) { return (n === 1) ? 0 : (n >= 2 && n <= 4) ? 1 : 2; },
                    polish:    function(n) { return (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); },
                    icelandic: function(n) { return (n % 10 !== 1 || n % 100 === 11) ? 1 : 0; }
                };

                // Mapping from pluralization group to individual locales.
                var pluralTypeToLanguages = {
                    chinese:   ['fa', 'id', 'ja', 'ko', 'lo', 'ms', 'th', 'tr', 'zh'],
                    german:    ['da', 'de', 'en', 'es', 'fi', 'el', 'he', 'hu', 'it', 'nl', 'no', 'pt', 'sv'],
                    french:    ['fr', 'tl', 'pt-br'],
                    russian:   ['hr', 'ru'],
                    czech:     ['cs'],
                    polish:    ['pl'],
                    icelandic: ['is']
                };

                function langToTypeMap(mapping) {
                    var type, langs, l, ret = {};
                    for (type in mapping) {
                        if (mapping.hasOwnProperty(type)) {
                            langs = mapping[type];
                            for (l in langs) {
                                ret[langs[l]] = type;
                            }
                        }
                    }
                    return ret;
                }

                // Trim a string.
                function trim(str){
                    var trimRe = /^\s+|\s+$/g;
                    return str.replace(trimRe, '');
                }

                // Based on a phrase text that contains `n` plural forms separated
                // by `delimeter`, a `locale`, and a `count`, choose the correct
                // plural form, or none if `count` is `null`.
                function choosePluralForm(text, locale, count){
                    var ret, texts, chosenText;
                    if (count != null && text) {
                        texts = text.split(delimeter);
                        chosenText = texts[pluralTypeIndex(locale, count)] || texts[0];
                        ret = trim(chosenText);
                    } else {
                        ret = text;
                    }
                    return ret;
                }

                function pluralTypeName(locale) {
                    var langToPluralType = langToTypeMap(pluralTypeToLanguages);
                    return langToPluralType[locale] || langToPluralType.en;
                }

                function pluralTypeIndex(locale, count) {
                    return pluralTypes[pluralTypeName(locale)](count);
                }

                // ### interpolate
                //
                // Does the dirty work. Creates a `RegExp` object for each
                // interpolation placeholder.
                function interpolate(phrase, options) {
                    for (var arg in options) {
                        if (arg !== '_' && options.hasOwnProperty(arg)) {
                            // We create a new `RegExp` each time instead of using a more-efficient
                            // string replace so that the same argument can be replaced multiple times
                            // in the same phrase.
                            phrase = phrase.replace(new RegExp('%\\{'+arg+'\\}', 'g'), options[arg]);
                        }
                    }
                    return phrase;
                }

                // ### warn
                //
                // Provides a warning in the console if a phrase key is missing.
                function warn(message) {
                    root.console && root.console.warn && root.console.warn('WARNING: ' + message);
                }

                // ### clone
                //
                // Clone an object.
                function clone(source) {
                    var ret = {};
                    for (var prop in source) {
                        ret[prop] = source[prop];
                    }
                    return ret;
                }

                return Polyglot;
            }));


            /***/ }),
        /* 141 */
        /***/ (function(module, exports) {

            module.exports = {
                "init": "Gitalk 加载中 ...",
                "no-found-related": "未找到相关的 %{link} 进行评论",
                "please-contact": "请联系 %{user} 初始化创建",
                "init-issue": "初始化 Issue",
                "leave-a-comment": "说点什么",
                "comment": "评论",
                "support-markdown": "支持 Markdown 语法",
                "login-with-github": "使用 Github 登录",
                "first-comment-person": "来做第一个留言的人吧！",
                "commented": "发表于",
                "load-more": "加载更多",
                "power": "由 %{link} 驱动",
                "counts": "%{counts} 条评论",
                "sort-asc": "从旧到新排序",
                "sort-desc": "从新到旧排序",
                "logout": "注销",
                "anonymous": "未登录用户"
            };

            /***/ }),
        /* 142 */
        /***/ (function(module, exports) {

            module.exports = {
                "init": "Gitalk 加載中 ...",
                "no-found-related": "未找到相關的 %{link} 進行評論",
                "please-contact": "請聯系 %{user} 初始化創建",
                "init-issue": "初始化 Issue",
                "leave-a-comment": "說點什麽",
                "comment": "評論",
                "support-markdown": "支持 Markdown 語法",
                "login-with-github": "使用 Github 登錄",
                "first-comment-person": "來做第一個留言的人吧！",
                "commented": "發表於",
                "load-more": "加載更多",
                "power": "由 %{link} 驅動",
                "counts": "%{counts} 條評論",
                "sort-asc": "從舊到新排序",
                "sort-desc": "從新到舊排序",
                "logout": "註銷",
                "anonymous": "未登錄用戶"
            };

            /***/ }),
        /* 143 */
        /***/ (function(module, exports) {

            module.exports = {
                "init": "Gitalking ...",
                "no-found-related": "Related %{link} not found",
                "please-contact": "Please contact %{user} to initialize the comment",
                "init-issue": "Init Issue",
                "leave-a-comment": "Leave a comment",
                "comment": "Comment",
                "support-markdown": "Markdown is supported",
                "login-with-github": "Login with Github",
                "first-comment-person": "Be the first guy leaving a comment!",
                "commented": "commented",
                "load-more": "Load more",
                "power": "%{link} v1.0.0",
                "counts": "%{counts} comment |||| %{counts} comments",
                "sort-asc": "Sort by Oldest",
                "sort-desc": "Sort by Latest",
                "logout": "Logout",
                "anonymous": "Anonymous"
            };

            /***/ }),
        /* 144 */
        /***/ (function(module, exports) {

            module.exports = {
                "init": "Gitalking ...",
                "no-found-related": "Link %{link} no encontrado",
                "please-contact": "Por favor contacta con %{user} para inicializar el comentario",
                "init-issue": "Iniciar Issue",
                "leave-a-comment": "Deja un comentario",
                "comment": "Comentario",
                "support-markdown": "Markdown es soportado",
                "login-with-github": "Entrar con Github",
                "first-comment-person": "Sé el primero en dejar un comentario!",
                "commented": "comentó",
                "load-more": "Cargar más",
                "power": "%{link} v1.0.0",
                "counts": "%{counts} comentario |||| %{counts} comentarios",
                "sort-asc": "Ordenar por Antiguos",
                "sort-desc": "Ordenar por Recientes",
                "logout": "Salir",
                "anonymous": "Anónimo"
            };

            /***/ }),
        /* 145 */
        /***/ (function(module, exports) {

            module.exports = {
                "init": "Gitalking ...",
                "no-found-related": "Lien %{link} non trouvé",
                "please-contact": "S’il vous plaît contactez %{user} pour initialiser les commentaires",
                "init-issue": "Initialisation des issues",
                "leave-a-comment": "Laisser un commentaire",
                "comment": "Commentaire",
                "support-markdown": "Markdown est supporté",
                "login-with-github": "Se connecter avec Github",
                "first-comment-person": "Être le premier à laisser un commentaire !",
                "commented": "commenter",
                "load-more": "Charger plus",
                "power": "%{link} v1.0.0",
                "counts": "%{counts} commentaire |||| %{counts} commentaires",
                "sort-asc": "Trier par plus ancien",
                "sort-desc": "Trier par plus récent",
                "logout": "Déconnexion",
                "anonymous": "Anonyme"
            };

            /***/ }),
        /* 146 */
        /***/ (function(module, exports) {

// removed by extract-text-webpack-plugin

            /***/ }),
        /* 147 */
        /***/ (function(module, exports, __webpack_require__) {

            module.exports = { "default": __webpack_require__(148), __esModule: true };

            /***/ }),
        /* 148 */
        /***/ (function(module, exports, __webpack_require__) {

            __webpack_require__(149);
            module.exports = __webpack_require__(0).Object.keys;

            /***/ }),
        /* 149 */
        /***/ (function(module, exports, __webpack_require__) {

// 19.1.2.14 Object.keys(O)
            var toObject = __webpack_require__(22)
                , $keys    = __webpack_require__(17);

            __webpack_require__(64)('keys', function(){
                return function keys(it){
                    return $keys(toObject(it));
                };
            });

            /***/ }),
        /* 150 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            exports.__esModule = true;

            var _isIterable2 = __webpack_require__(151);

            var _isIterable3 = _interopRequireDefault(_isIterable2);

            var _getIterator2 = __webpack_require__(154);

            var _getIterator3 = _interopRequireDefault(_getIterator2);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            exports.default = function () {
                function sliceIterator(arr, i) {
                    var _arr = [];
                    var _n = true;
                    var _d = false;
                    var _e = undefined;

                    try {
                        for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {
                            _arr.push(_s.value);

                            if (i && _arr.length === i) break;
                        }
                    } catch (err) {
                        _d = true;
                        _e = err;
                    } finally {
                        try {
                            if (!_n && _i["return"]) _i["return"]();
                        } finally {
                            if (_d) throw _e;
                        }
                    }

                    return _arr;
                }

                return function (arr, i) {
                    if (Array.isArray(arr)) {
                        return arr;
                    } else if ((0, _isIterable3.default)(Object(arr))) {
                        return sliceIterator(arr, i);
                    } else {
                        throw new TypeError("Invalid attempt to destructure non-iterable instance");
                    }
                };
            }();

            /***/ }),
        /* 151 */
        /***/ (function(module, exports, __webpack_require__) {

            module.exports = { "default": __webpack_require__(152), __esModule: true };

            /***/ }),
        /* 152 */
        /***/ (function(module, exports, __webpack_require__) {

            __webpack_require__(26);
            __webpack_require__(20);
            module.exports = __webpack_require__(153);

            /***/ }),
        /* 153 */
        /***/ (function(module, exports, __webpack_require__) {

            var classof   = __webpack_require__(43)
                , ITERATOR  = __webpack_require__(1)('iterator')
                , Iterators = __webpack_require__(16);
            module.exports = __webpack_require__(0).isIterable = function(it){
                var O = Object(it);
                return O[ITERATOR] !== undefined
                    || '@@iterator' in O
                    || Iterators.hasOwnProperty(classof(O));
            };

            /***/ }),
        /* 154 */
        /***/ (function(module, exports, __webpack_require__) {

            module.exports = { "default": __webpack_require__(155), __esModule: true };

            /***/ }),
        /* 155 */
        /***/ (function(module, exports, __webpack_require__) {

            __webpack_require__(26);
            __webpack_require__(20);
            module.exports = __webpack_require__(156);

            /***/ }),
        /* 156 */
        /***/ (function(module, exports, __webpack_require__) {

            var anObject = __webpack_require__(7)
                , get      = __webpack_require__(44);
            module.exports = __webpack_require__(0).getIterator = function(it){
                var iterFn = get(it);
                if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!');
                return anObject(iterFn.call(it));
            };

            /***/ }),
        /* 157 */
        /***/ (function(module, exports, __webpack_require__) {

            module.exports = __webpack_require__(158);

            /***/ }),
        /* 158 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            var utils = __webpack_require__(3);
            var bind = __webpack_require__(71);
            var Axios = __webpack_require__(160);
            var defaults = __webpack_require__(49);

            /**
             * Create an instance of Axios
             *
             * @param {Object} defaultConfig The default config for the instance
             * @return {Axios} A new instance of Axios
             */
            function createInstance(defaultConfig) {
                var context = new Axios(defaultConfig);
                var instance = bind(Axios.prototype.request, context);

                // Copy axios.prototype to instance
                utils.extend(instance, Axios.prototype, context);

                // Copy context to instance
                utils.extend(instance, context);

                return instance;
            }

// Create the default instance to be exported
            var axios = createInstance(defaults);

// Expose Axios class to allow class inheritance
            axios.Axios = Axios;

// Factory for creating new instances
            axios.create = function create(instanceConfig) {
                return createInstance(utils.merge(defaults, instanceConfig));
            };

// Expose Cancel & CancelToken
            axios.Cancel = __webpack_require__(75);
            axios.CancelToken = __webpack_require__(174);
            axios.isCancel = __webpack_require__(74);

// Expose all/spread
            axios.all = function all(promises) {
                return Promise.all(promises);
            };
            axios.spread = __webpack_require__(175);

            module.exports = axios;

// Allow use of default import syntax in TypeScript
            module.exports.default = axios;


            /***/ }),
        /* 159 */
        /***/ (function(module, exports) {

            /*!
             * Determine if an object is a Buffer
             *
             * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
             * @license  MIT
             */

// The _isBuffer check is for Safari 5-7 support, because it's missing
// Object.prototype.constructor. Remove this eventually
            module.exports = function (obj) {
                return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
            }

            function isBuffer (obj) {
                return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
            }

// For Node v0.10 support. Remove this eventually.
            function isSlowBuffer (obj) {
                return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
            }


            /***/ }),
        /* 160 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            var defaults = __webpack_require__(49);
            var utils = __webpack_require__(3);
            var InterceptorManager = __webpack_require__(169);
            var dispatchRequest = __webpack_require__(170);
            var isAbsoluteURL = __webpack_require__(172);
            var combineURLs = __webpack_require__(173);

            /**
             * Create a new instance of Axios
             *
             * @param {Object} instanceConfig The default config for the instance
             */
            function Axios(instanceConfig) {
                this.defaults = instanceConfig;
                this.interceptors = {
                    request: new InterceptorManager(),
                    response: new InterceptorManager()
                };
            }

            /**
             * Dispatch a request
             *
             * @param {Object} config The config specific for this request (merged with this.defaults)
             */
            Axios.prototype.request = function request(config) {
                /*eslint no-param-reassign:0*/
                // Allow for axios('example/url'[, config]) a la fetch API
                if (typeof config === 'string') {
                    config = utils.merge({
                        url: arguments[0]
                    }, arguments[1]);
                }

                config = utils.merge(defaults, this.defaults, { method: 'get' }, config);
                config.method = config.method.toLowerCase();

                // Support baseURL config
                if (config.baseURL && !isAbsoluteURL(config.url)) {
                    config.url = combineURLs(config.baseURL, config.url);
                }

                // Hook up interceptors middleware
                var chain = [dispatchRequest, undefined];
                var promise = Promise.resolve(config);

                this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
                    chain.unshift(interceptor.fulfilled, interceptor.rejected);
                });

                this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
                    chain.push(interceptor.fulfilled, interceptor.rejected);
                });

                while (chain.length) {
                    promise = promise.then(chain.shift(), chain.shift());
                }

                return promise;
            };

// Provide aliases for supported request methods
            utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
                /*eslint func-names:0*/
                Axios.prototype[method] = function(url, config) {
                    return this.request(utils.merge(config || {}, {
                        method: method,
                        url: url
                    }));
                };
            });

            utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
                /*eslint func-names:0*/
                Axios.prototype[method] = function(url, data, config) {
                    return this.request(utils.merge(config || {}, {
                        method: method,
                        url: url,
                        data: data
                    }));
                };
            });

            module.exports = Axios;


            /***/ }),
        /* 161 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            var utils = __webpack_require__(3);

            module.exports = function normalizeHeaderName(headers, normalizedName) {
                utils.forEach(headers, function processHeader(value, name) {
                    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {
                        headers[normalizedName] = value;
                        delete headers[name];
                    }
                });
            };


            /***/ }),
        /* 162 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            var createError = __webpack_require__(73);

            /**
             * Resolve or reject a Promise based on response status.
             *
             * @param {Function} resolve A function that resolves the promise.
             * @param {Function} reject A function that rejects the promise.
             * @param {object} response The response.
             */
            module.exports = function settle(resolve, reject, response) {
                var validateStatus = response.config.validateStatus;
                // Note: status is not exposed by XDomainRequest
                if (!response.status || !validateStatus || validateStatus(response.status)) {
                    resolve(response);
                } else {
                    reject(createError(
                        'Request failed with status code ' + response.status,
                        response.config,
                        null,
                        response.request,
                        response
                    ));
                }
            };


            /***/ }),
        /* 163 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            /**
             * Update an Error with the specified config, error code, and response.
             *
             * @param {Error} error The error to update.
             * @param {Object} config The config.
             * @param {string} [code] The error code (for example, 'ECONNABORTED').
             * @param {Object} [request] The request.
             * @param {Object} [response] The response.
             * @returns {Error} The error.
             */
            module.exports = function enhanceError(error, config, code, request, response) {
                error.config = config;
                if (code) {
                    error.code = code;
                }
                error.request = request;
                error.response = response;
                return error;
            };


            /***/ }),
        /* 164 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            var utils = __webpack_require__(3);

            function encode(val) {
                return encodeURIComponent(val).
                replace(/%40/gi, '@').
                replace(/%3A/gi, ':').
                replace(/%24/g, '$').
                replace(/%2C/gi, ',').
                replace(/%20/g, '+').
                replace(/%5B/gi, '[').
                replace(/%5D/gi, ']');
            }

            /**
             * Build a URL by appending params to the end
             *
             * @param {string} url The base of the url (e.g., http://www.google.com)
             * @param {object} [params] The params to be appended
             * @returns {string} The formatted url
             */
            module.exports = function buildURL(url, params, paramsSerializer) {
                /*eslint no-param-reassign:0*/
                if (!params) {
                    return url;
                }

                var serializedParams;
                if (paramsSerializer) {
                    serializedParams = paramsSerializer(params);
                } else if (utils.isURLSearchParams(params)) {
                    serializedParams = params.toString();
                } else {
                    var parts = [];

                    utils.forEach(params, function serialize(val, key) {
                        if (val === null || typeof val === 'undefined') {
                            return;
                        }

                        if (utils.isArray(val)) {
                            key = key + '[]';
                        }

                        if (!utils.isArray(val)) {
                            val = [val];
                        }

                        utils.forEach(val, function parseValue(v) {
                            if (utils.isDate(v)) {
                                v = v.toISOString();
                            } else if (utils.isObject(v)) {
                                v = JSON.stringify(v);
                            }
                            parts.push(encode(key) + '=' + encode(v));
                        });
                    });

                    serializedParams = parts.join('&');
                }

                if (serializedParams) {
                    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
                }

                return url;
            };


            /***/ }),
        /* 165 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            var utils = __webpack_require__(3);

            /**
             * Parse headers into an object
             *
             * ```
             * Date: Wed, 27 Aug 2014 08:58:49 GMT
             * Content-Type: application/json
             * Connection: keep-alive
             * Transfer-Encoding: chunked
             * ```
             *
             * @param {String} headers Headers needing to be parsed
             * @returns {Object} Headers parsed into an object
             */
            module.exports = function parseHeaders(headers) {
                var parsed = {};
                var key;
                var val;
                var i;

                if (!headers) { return parsed; }

                utils.forEach(headers.split('\n'), function parser(line) {
                    i = line.indexOf(':');
                    key = utils.trim(line.substr(0, i)).toLowerCase();
                    val = utils.trim(line.substr(i + 1));

                    if (key) {
                        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
                    }
                });

                return parsed;
            };


            /***/ }),
        /* 166 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            var utils = __webpack_require__(3);

            module.exports = (
                utils.isStandardBrowserEnv() ?

                    // Standard browser envs have full support of the APIs needed to test
                    // whether the request URL is of the same origin as current location.
                    (function standardBrowserEnv() {
                        var msie = /(msie|trident)/i.test(navigator.userAgent);
                        var urlParsingNode = document.createElement('a');
                        var originURL;

                        /**
                         * Parse a URL to discover it's components
                         *
                         * @param {String} url The URL to be parsed
                         * @returns {Object}
                         */
                        function resolveURL(url) {
                            var href = url;

                            if (msie) {
                                // IE needs attribute set twice to normalize properties
                                urlParsingNode.setAttribute('href', href);
                                href = urlParsingNode.href;
                            }

                            urlParsingNode.setAttribute('href', href);

                            // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
                            return {
                                href: urlParsingNode.href,
                                protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
                                host: urlParsingNode.host,
                                search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
                                hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
                                hostname: urlParsingNode.hostname,
                                port: urlParsingNode.port,
                                pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
                                    urlParsingNode.pathname :
                                    '/' + urlParsingNode.pathname
                            };
                        }

                        originURL = resolveURL(window.location.href);

                        /**
                         * Determine if a URL shares the same origin as the current location
                         *
                         * @param {String} requestURL The URL to test
                         * @returns {boolean} True if URL shares the same origin, otherwise false
                         */
                        return function isURLSameOrigin(requestURL) {
                            var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;
                            return (parsed.protocol === originURL.protocol &&
                            parsed.host === originURL.host);
                        };
                    })() :

                    // Non standard browser envs (web workers, react-native) lack needed support.
                    (function nonStandardBrowserEnv() {
                        return function isURLSameOrigin() {
                            return true;
                        };
                    })()
            );


            /***/ }),
        /* 167 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js

            var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';

            function E() {
                this.message = 'String contains an invalid character';
            }
            E.prototype = new Error;
            E.prototype.code = 5;
            E.prototype.name = 'InvalidCharacterError';

            function btoa(input) {
                var str = String(input);
                var output = '';
                for (
                    // initialize result and counter
                    var block, charCode, idx = 0, map = chars;
                    // if the next str index does not exist:
                    //   change the mapping table to "="
                    //   check if d has no fractional digits
                    str.charAt(idx | 0) || (map = '=', idx % 1);
                    // "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8
                    output += map.charAt(63 & block >> 8 - idx % 1 * 8)
                ) {
                    charCode = str.charCodeAt(idx += 3 / 4);
                    if (charCode > 0xFF) {
                        throw new E();
                    }
                    block = block << 8 | charCode;
                }
                return output;
            }

            module.exports = btoa;


            /***/ }),
        /* 168 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            var utils = __webpack_require__(3);

            module.exports = (
                utils.isStandardBrowserEnv() ?

                    // Standard browser envs support document.cookie
                    (function standardBrowserEnv() {
                        return {
                            write: function write(name, value, expires, path, domain, secure) {
                                var cookie = [];
                                cookie.push(name + '=' + encodeURIComponent(value));

                                if (utils.isNumber(expires)) {
                                    cookie.push('expires=' + new Date(expires).toGMTString());
                                }

                                if (utils.isString(path)) {
                                    cookie.push('path=' + path);
                                }

                                if (utils.isString(domain)) {
                                    cookie.push('domain=' + domain);
                                }

                                if (secure === true) {
                                    cookie.push('secure');
                                }

                                document.cookie = cookie.join('; ');
                            },

                            read: function read(name) {
                                var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
                                return (match ? decodeURIComponent(match[3]) : null);
                            },

                            remove: function remove(name) {
                                this.write(name, '', Date.now() - 86400000);
                            }
                        };
                    })() :

                    // Non standard browser env (web workers, react-native) lack needed support.
                    (function nonStandardBrowserEnv() {
                        return {
                            write: function write() {},
                            read: function read() { return null; },
                            remove: function remove() {}
                        };
                    })()
            );


            /***/ }),
        /* 169 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            var utils = __webpack_require__(3);

            function InterceptorManager() {
                this.handlers = [];
            }

            /**
             * Add a new interceptor to the stack
             *
             * @param {Function} fulfilled The function to handle `then` for a `Promise`
             * @param {Function} rejected The function to handle `reject` for a `Promise`
             *
             * @return {Number} An ID used to remove interceptor later
             */
            InterceptorManager.prototype.use = function use(fulfilled, rejected) {
                this.handlers.push({
                    fulfilled: fulfilled,
                    rejected: rejected
                });
                return this.handlers.length - 1;
            };

            /**
             * Remove an interceptor from the stack
             *
             * @param {Number} id The ID that was returned by `use`
             */
            InterceptorManager.prototype.eject = function eject(id) {
                if (this.handlers[id]) {
                    this.handlers[id] = null;
                }
            };

            /**
             * Iterate over all the registered interceptors
             *
             * This method is particularly useful for skipping over any
             * interceptors that may have become `null` calling `eject`.
             *
             * @param {Function} fn The function to call for each interceptor
             */
            InterceptorManager.prototype.forEach = function forEach(fn) {
                utils.forEach(this.handlers, function forEachHandler(h) {
                    if (h !== null) {
                        fn(h);
                    }
                });
            };

            module.exports = InterceptorManager;


            /***/ }),
        /* 170 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            var utils = __webpack_require__(3);
            var transformData = __webpack_require__(171);
            var isCancel = __webpack_require__(74);
            var defaults = __webpack_require__(49);

            /**
             * Throws a `Cancel` if cancellation has been requested.
             */
            function throwIfCancellationRequested(config) {
                if (config.cancelToken) {
                    config.cancelToken.throwIfRequested();
                }
            }

            /**
             * Dispatch a request to the server using the configured adapter.
             *
             * @param {object} config The config that is to be used for the request
             * @returns {Promise} The Promise to be fulfilled
             */
            module.exports = function dispatchRequest(config) {
                throwIfCancellationRequested(config);

                // Ensure headers exist
                config.headers = config.headers || {};

                // Transform request data
                config.data = transformData(
                    config.data,
                    config.headers,
                    config.transformRequest
                );

                // Flatten headers
                config.headers = utils.merge(
                    config.headers.common || {},
                    config.headers[config.method] || {},
                    config.headers || {}
                );

                utils.forEach(
                    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
                    function cleanHeaderConfig(method) {
                        delete config.headers[method];
                    }
                );

                var adapter = config.adapter || defaults.adapter;

                return adapter(config).then(function onAdapterResolution(response) {
                    throwIfCancellationRequested(config);

                    // Transform response data
                    response.data = transformData(
                        response.data,
                        response.headers,
                        config.transformResponse
                    );

                    return response;
                }, function onAdapterRejection(reason) {
                    if (!isCancel(reason)) {
                        throwIfCancellationRequested(config);

                        // Transform response data
                        if (reason && reason.response) {
                            reason.response.data = transformData(
                                reason.response.data,
                                reason.response.headers,
                                config.transformResponse
                            );
                        }
                    }

                    return Promise.reject(reason);
                });
            };


            /***/ }),
        /* 171 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            var utils = __webpack_require__(3);

            /**
             * Transform the data for a request or a response
             *
             * @param {Object|String} data The data to be transformed
             * @param {Array} headers The headers for the request or response
             * @param {Array|Function} fns A single function or Array of functions
             * @returns {*} The resulting transformed data
             */
            module.exports = function transformData(data, headers, fns) {
                /*eslint no-param-reassign:0*/
                utils.forEach(fns, function transform(fn) {
                    data = fn(data, headers);
                });

                return data;
            };


            /***/ }),
        /* 172 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            /**
             * Determines whether the specified URL is absolute
             *
             * @param {string} url The URL to test
             * @returns {boolean} True if the specified URL is absolute, otherwise false
             */
            module.exports = function isAbsoluteURL(url) {
                // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL).
                // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
                // by any combination of letters, digits, plus, period, or hyphen.
                return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
            };


            /***/ }),
        /* 173 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            /**
             * Creates a new URL by combining the specified URLs
             *
             * @param {string} baseURL The base URL
             * @param {string} relativeURL The relative URL
             * @returns {string} The combined URL
             */
            module.exports = function combineURLs(baseURL, relativeURL) {
                return relativeURL
                    ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '')
                    : baseURL;
            };


            /***/ }),
        /* 174 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            var Cancel = __webpack_require__(75);

            /**
             * A `CancelToken` is an object that can be used to request cancellation of an operation.
             *
             * @class
             * @param {Function} executor The executor function.
             */
            function CancelToken(executor) {
                if (typeof executor !== 'function') {
                    throw new TypeError('executor must be a function.');
                }

                var resolvePromise;
                this.promise = new Promise(function promiseExecutor(resolve) {
                    resolvePromise = resolve;
                });

                var token = this;
                executor(function cancel(message) {
                    if (token.reason) {
                        // Cancellation has already been requested
                        return;
                    }

                    token.reason = new Cancel(message);
                    resolvePromise(token.reason);
                });
            }

            /**
             * Throws a `Cancel` if cancellation has been requested.
             */
            CancelToken.prototype.throwIfRequested = function throwIfRequested() {
                if (this.reason) {
                    throw this.reason;
                }
            };

            /**
             * Returns an object that contains a new `CancelToken` and a function that, when called,
             * cancels the `CancelToken`.
             */
            CancelToken.source = function source() {
                var cancel;
                var token = new CancelToken(function executor(c) {
                    cancel = c;
                });
                return {
                    token: token,
                    cancel: cancel
                };
            };

            module.exports = CancelToken;


            /***/ }),
        /* 175 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            /**
             * Syntactic sugar for invoking a function and expanding an array for arguments.
             *
             * Common use case would be to use `Function.prototype.apply`.
             *
             *  ```js
             *  function f(x, y, z) {}
             *  var args = [1, 2, 3];
             *  f.apply(null, args);
             *  ```
             *
             * With `spread` this example can be re-written.
             *
             *  ```js
             *  spread(function(x, y, z) {})([1, 2, 3]);
             *  ```
             *
             * @param {Function} callback
             * @returns {Function}
             */
            module.exports = function spread(callback) {
                return function wrap(arr) {
                    return callback.apply(null, arr);
                };
            };


            /***/ }),
        /* 176 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            exports.default = Button;

            var _react = __webpack_require__(4);

            var _react2 = _interopRequireDefault(_react);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            function Button(props) {
                var className = 'gt-btn ';
                props.className && (className += props.className);
                return _react2.default.createElement(
                    'button',
                    { ref: function ref(el) {
                        return props.getRef && props.getRef(el);
                    }, className: className, onClick: props.onClick, onMouseDown: props.onMouseDown },
                    _react2.default.createElement(
                        'span',
                        { className: 'gt-btn-text' },
                        props.text
                    ),
                    props.isLoading && _react2.default.createElement('span', { className: 'gt-btn-loading gt-spinner' })
                );
            }

            /***/ }),
        /* 177 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            exports.default = Action;

            var _react = __webpack_require__(4);

            var _react2 = _interopRequireDefault(_react);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            function Action(props) {
                var className = 'gt-action ';
                props.className && (className += props.className);
                return _react2.default.createElement(
                    'a',
                    { className: className, onClick: props.onClick },
                    _react2.default.createElement(
                        'span',
                        { className: 'gt-action-text' },
                        props.text
                    )
                );
            }

            /***/ }),
        /* 178 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            Object.defineProperty(exports, "__esModule", {
                value: true
            });

            var _getPrototypeOf = __webpack_require__(63);

            var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);

            var _classCallCheck2 = __webpack_require__(28);

            var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);

            var _createClass2 = __webpack_require__(29);

            var _createClass3 = _interopRequireDefault(_createClass2);

            var _possibleConstructorReturn2 = __webpack_require__(65);

            var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);

            var _inherits2 = __webpack_require__(69);

            var _inherits3 = _interopRequireDefault(_inherits2);

            var _react = __webpack_require__(4);

            var _react2 = _interopRequireDefault(_react);

            var _avatar = __webpack_require__(76);

            var _avatar2 = _interopRequireDefault(_avatar);

            var _svg = __webpack_require__(77);

            var _svg2 = _interopRequireDefault(_svg);

            var _distance_in_words_to_now = __webpack_require__(185);

            var _distance_in_words_to_now2 = _interopRequireDefault(_distance_in_words_to_now);

            var _index = __webpack_require__(198);

            var _index2 = _interopRequireDefault(_index);

            var _index3 = __webpack_require__(199);

            var _index4 = _interopRequireDefault(_index3);

            var _index5 = __webpack_require__(200);

            var _index6 = _interopRequireDefault(_index5);

            var _index7 = __webpack_require__(201);

            var _index8 = _interopRequireDefault(_index7);

            __webpack_require__(202);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            var ZHCN = (0, _index2.default)();
            var ZHTW = (0, _index4.default)();
            var ES = (0, _index6.default)();
            var FR = (0, _index8.default)();
            window.GT_i18n_distanceInWordsLocaleMap = {
                'zh': ZHCN,
                'zh-CN': ZHCN,
                'zh-TW': ZHTW,
                'es-ES': ES,
                'fr': FR
            };

            var Comment = function (_Component) {
                (0, _inherits3.default)(Comment, _Component);

                function Comment() {
                    (0, _classCallCheck3.default)(this, Comment);
                    return (0, _possibleConstructorReturn3.default)(this, (Comment.__proto__ || (0, _getPrototypeOf2.default)(Comment)).apply(this, arguments));
                }

                (0, _createClass3.default)(Comment, [{
                    key: 'render',
                    value: function render() {
                        var _props = this.props,
                            comment = _props.comment,
                            user = _props.user,
                            language = _props.language,
                            _props$commentedText = _props.commentedText,
                            commentedText = _props$commentedText === undefined ? '' : _props$commentedText,
                            _props$admin = _props.admin,
                            admin = _props$admin === undefined ? [] : _props$admin,
                            replyCallback = _props.replyCallback;

                        var enableEdit = user && comment.user.login === user.login;
                        var isAdmin = ~admin.indexOf(comment.user.login);
                        return _react2.default.createElement(
                            'div',
                            { className: 'gt-comment ' + (isAdmin ? 'gt-comment-admin' : '') },
                            _react2.default.createElement(_avatar2.default, { className: 'gt-comment-avatar', src: comment.user && comment.user.avatar_url }),
                            _react2.default.createElement(
                                'div',
                                { className: 'gt-comment-content' },
                                _react2.default.createElement(
                                    'div',
                                    { className: 'gt-comment-header' },
                                    _react2.default.createElement(
                                        'a',
                                        { className: 'gt-comment-username', href: comment.user && comment.user.html_url },
                                        comment.user && comment.user.login
                                    ),
                                    _react2.default.createElement(
                                        'span',
                                        { className: 'gt-comment-text' },
                                        commentedText
                                    ),
                                    _react2.default.createElement(
                                        'span',
                                        { className: 'gt-comment-date' },
                                        (0, _distance_in_words_to_now2.default)(comment.created_at, {
                                            addSuffix: true,
                                            locale: {
                                                distanceInWords: window.GT_i18n_distanceInWordsLocaleMap[language]
                                            }
                                        })
                                    ),
                                    enableEdit ? _react2.default.createElement(
                                        'a',
                                        { href: comment.html_url, className: 'gt-comment-edit', target: '_blank' },
                                        _react2.default.createElement(_svg2.default, { className: 'gt-ico-edit', name: 'edit' })
                                    ) : _react2.default.createElement(
                                        'a',
                                        { className: 'gt-comment-reply', onClick: replyCallback },
                                        _react2.default.createElement(_svg2.default, { className: 'gt-ico-reply', name: 'reply' })
                                    )
                                ),
                                _react2.default.createElement('div', { className: 'gt-comment-body markdown-body', dangerouslySetInnerHTML: {
                                    __html: comment.body_html
                                } })
                            )
                        );
                    }
                }]);
                return Comment;
            }(_react.Component);

            exports.default = Comment;

            /***/ }),
        /* 179 */
        /***/ (function(module, exports, __webpack_require__) {

            var map = {
                "./arrow_down.svg": 180,
                "./edit.svg": 181,
                "./github.svg": 182,
                "./reply.svg": 183,
                "./tip.svg": 184
            };
            function webpackContext(req) {
                return __webpack_require__(webpackContextResolve(req));
            };
            function webpackContextResolve(req) {
                var id = map[req];
                if(!(id + 1)) // check for number or string
                    throw new Error("Cannot find module '" + req + "'.");
                return id;
            };
            webpackContext.keys = function webpackContextKeys() {
                return Object.keys(map);
            };
            webpackContext.resolve = webpackContextResolve;
            module.exports = webpackContext;
            webpackContext.id = 179;

            /***/ }),
        /* 180 */
        /***/ (function(module, exports) {

            module.exports = "<svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1619\"><path d=\"M511.872 676.8c-0.003 0-0.006 0-0.008 0-9.137 0-17.379-3.829-23.21-9.97l-251.277-265.614c-5.415-5.72-8.743-13.464-8.744-21.984 0-17.678 14.33-32.008 32.008-32.008 9.157 0 17.416 3.845 23.25 10.009l228.045 241.103 228.224-241.088c5.855-6.165 14.113-10.001 23.266-10.001 8.516 0 16.256 3.32 21.998 8.736 12.784 12.145 13.36 32.434 1.264 45.233l-251.52 265.6c-5.844 6.155-14.086 9.984-23.223 9.984-0.025 0-0.051 0-0.076 0z\" p-id=\"1620\"></path></svg>"

            /***/ }),
        /* 181 */
        /***/ (function(module, exports) {

            module.exports = "<svg viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\n  <path d=\"M785.333333 85.333333C774.666667 85.333333 763.2 90.133333 754.666667 98.666667L682.666667 170.666667 853.333333 341.333333 925.333333 269.333333C942.4 252.266667 942.4 222.133333 925.333333 209.333333L814.666667 98.666667C806.133333 90.133333 796 85.333333 785.333333 85.333333zM640 217.333333 85.333333 768 85.333333 938.666667 256 938.666667 806.666667 384 640 217.333333z\"></path>\n</svg>\n"

            /***/ }),
        /* 182 */
        /***/ (function(module, exports) {

            module.exports = "<svg viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n  <path d=\"M64 524C64 719.602 189.356 885.926 364.113 947.017 387.65799 953 384 936.115 384 924.767L384 847.107C248.118 863.007 242.674 773.052 233.5 758.001 215 726.501 171.5 718.501 184.5 703.501 215.5 687.501 247 707.501 283.5 761.501 309.956 800.642 361.366 794.075 387.658 787.497 393.403 763.997 405.637 743.042 422.353 726.638 281.774 701.609 223 615.67 223 513.5 223 464.053 239.322 418.406 271.465 381.627 251.142 320.928 273.421 269.19 276.337 261.415 334.458 256.131 394.888 302.993 399.549 306.685 432.663 297.835 470.341 293 512.5 293 554.924 293 592.81 297.896 626.075 306.853 637.426 298.219 693.46 258.054 747.5 262.966 750.382 270.652 772.185 321.292 753.058 381.083 785.516 417.956 802 463.809 802 513.5 802 615.874 742.99 701.953 601.803 726.786 625.381 750.003 640 782.295 640 818.008L640 930.653C640.752 939.626 640 948.664978 655.086 948.665 832.344 888.962 960 721.389 960 524 960 276.576 759.424 76 512 76 264.577 76 64 276.576 64 524Z\"></path>\n</svg>\n"

            /***/ }),
        /* 183 */
        /***/ (function(module, exports) {

            module.exports = "<svg viewBox=\"0 0 1332 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n  <path d=\"M529.066665 273.066666 529.066665 0 51.2 477.866666 529.066665 955.733335 529.066665 675.84C870.4 675.84 1109.333335 785.066665 1280 1024 1211.733335 682.666665 1006.933335 341.333334 529.066665 273.066666\"></path>\n</svg>\n"

            /***/ }),
        /* 184 */
        /***/ (function(module, exports) {

            module.exports = "<svg viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n  <path d=\"M512 366.949535c-16.065554 0-29.982212 13.405016-29.982212 29.879884l0 359.070251c0 16.167882 13.405016 29.879884 29.982212 29.879884 15.963226 0 29.879884-13.405016 29.879884-29.879884L541.879884 396.829419C541.879884 380.763865 528.474868 366.949535 512 366.949535L512 366.949535z\"\n    p-id=\"3083\"></path>\n  <path d=\"M482.017788 287.645048c0-7.776956 3.274508-15.553912 8.80024-21.181973 5.525732-5.525732 13.302688-8.80024 21.181973-8.80024 7.776956 0 15.553912 3.274508 21.079644 8.80024 5.525732 5.62806 8.80024 13.405016 8.80024 21.181973 0 7.776956-3.274508 15.656241-8.80024 21.181973-5.525732 5.525732-13.405016 8.697911-21.079644 8.697911-7.879285 0-15.656241-3.274508-21.181973-8.697911C485.292295 303.301289 482.017788 295.524333 482.017788 287.645048L482.017788 287.645048z\"\n    p-id=\"3084\"></path>\n  <path d=\"M512 946.844409c-239.8577 0-434.895573-195.037873-434.895573-434.895573 0-239.8577 195.037873-434.895573 434.895573-434.895573 239.755371 0 434.895573 195.037873 434.895573 434.895573C946.895573 751.806535 751.755371 946.844409 512 946.844409zM512 126.17088c-212.740682 0-385.880284 173.037274-385.880284 385.777955 0 212.740682 173.037274 385.777955 385.880284 385.777955 212.740682 0 385.777955-173.037274 385.777955-385.777955C897.777955 299.208154 724.740682 126.17088 512 126.17088z\"\n    p-id=\"3085\"></path>\n</svg>\n"

            /***/ }),
        /* 185 */
        /***/ (function(module, exports, __webpack_require__) {

            var distanceInWords = __webpack_require__(186)

            /**
             * @category Common Helpers
             * @summary Return the distance between the given date and now in words.
             *
             * @description
             * Return the distance between the given date and now in words.
             *
             * | Distance to now                                                   | Result              |
             * |-------------------------------------------------------------------|---------------------|
             * | 0 ... 30 secs                                                     | less than a minute  |
             * | 30 secs ... 1 min 30 secs                                         | 1 minute            |
             * | 1 min 30 secs ... 44 mins 30 secs                                 | [2..44] minutes     |
             * | 44 mins ... 30 secs ... 89 mins 30 secs                           | about 1 hour        |
             * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs                        | about [2..24] hours |
             * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs                 | 1 day               |
             * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs         | [2..30] days        |
             * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month       |
             * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months      |
             * | 59 days 23 hrs 59 mins 30 secs ... 1 yr                           | [2..12] months      |
             * | 1 yr ... 1 yr 3 months                                            | about 1 year        |
             * | 1 yr 3 months ... 1 yr 9 month s                                  | over 1 year         |
             * | 1 yr 9 months ... 2 yrs                                           | almost 2 years      |
             * | N yrs ... N yrs 3 months                                          | about N years       |
             * | N yrs 3 months ... N yrs 9 months                                 | over N years        |
             * | N yrs 9 months ... N+1 yrs                                        | almost N+1 years    |
             *
             * With `options.includeSeconds == true`:
             * | Distance to now     | Result               |
             * |---------------------|----------------------|
             * | 0 secs ... 5 secs   | less than 5 seconds  |
             * | 5 secs ... 10 secs  | less than 10 seconds |
             * | 10 secs ... 20 secs | less than 20 seconds |
             * | 20 secs ... 40 secs | half a minute        |
             * | 40 secs ... 60 secs | less than a minute   |
             * | 60 secs ... 90 secs | 1 minute             |
             *
             * @param {Date|String|Number} date - the given date
             * @param {Object} [options] - the object with options
             * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed
             * @param {Boolean} [options.addSuffix=false] - result specifies if the second date is earlier or later than the first
             * @param {Object} [options.locale=enLocale] - the locale object
             * @returns {String} the distance in words
             *
             * @example
             * // If today is 1 January 2015, what is the distance to 2 July 2014?
             * var result = distanceInWordsToNow(
             *   new Date(2014, 6, 2)
             * )
             * //=> '6 months'
             *
             * @example
             * // If now is 1 January 2015 00:00:00,
             * // what is the distance to 1 January 2015 00:00:15, including seconds?
             * var result = distanceInWordsToNow(
             *   new Date(2015, 0, 1, 0, 0, 15),
             *   {includeSeconds: true}
             * )
             * //=> 'less than 20 seconds'
             *
             * @example
             * // If today is 1 January 2015,
             * // what is the distance to 1 January 2016, with a suffix?
             * var result = distanceInWordsToNow(
             *   new Date(2016, 0, 1),
             *   {addSuffix: true}
             * )
             * //=> 'in about 1 year'
             *
             * @example
             * // If today is 1 January 2015,
             * // what is the distance to 1 August 2016 in Esperanto?
             * var eoLocale = require('date-fns/locale/eo')
             * var result = distanceInWordsToNow(
             *   new Date(2016, 7, 1),
             *   {locale: eoLocale}
             * )
             * //=> 'pli ol 1 jaro'
             */
            function distanceInWordsToNow (dirtyDate, dirtyOptions) {
                return distanceInWords(Date.now(), dirtyDate, dirtyOptions)
            }

            module.exports = distanceInWordsToNow


            /***/ }),
        /* 186 */
        /***/ (function(module, exports, __webpack_require__) {

            var compareDesc = __webpack_require__(187)
            var parse = __webpack_require__(18)
            var differenceInSeconds = __webpack_require__(189)
            var differenceInMonths = __webpack_require__(191)
            var enLocale = __webpack_require__(194)

            var MINUTES_IN_DAY = 1440
            var MINUTES_IN_ALMOST_TWO_DAYS = 2520
            var MINUTES_IN_MONTH = 43200
            var MINUTES_IN_TWO_MONTHS = 86400

            /**
             * @category Common Helpers
             * @summary Return the distance between the given dates in words.
             *
             * @description
             * Return the distance between the given dates in words.
             *
             * | Distance between dates                                            | Result              |
             * |-------------------------------------------------------------------|---------------------|
             * | 0 ... 30 secs                                                     | less than a minute  |
             * | 30 secs ... 1 min 30 secs                                         | 1 minute            |
             * | 1 min 30 secs ... 44 mins 30 secs                                 | [2..44] minutes     |
             * | 44 mins ... 30 secs ... 89 mins 30 secs                           | about 1 hour        |
             * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs                        | about [2..24] hours |
             * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs                 | 1 day               |
             * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs         | [2..30] days        |
             * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month       |
             * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months      |
             * | 59 days 23 hrs 59 mins 30 secs ... 1 yr                           | [2..12] months      |
             * | 1 yr ... 1 yr 3 months                                            | about 1 year        |
             * | 1 yr 3 months ... 1 yr 9 month s                                  | over 1 year         |
             * | 1 yr 9 months ... 2 yrs                                           | almost 2 years      |
             * | N yrs ... N yrs 3 months                                          | about N years       |
             * | N yrs 3 months ... N yrs 9 months                                 | over N years        |
             * | N yrs 9 months ... N+1 yrs                                        | almost N+1 years    |
             *
             * With `options.includeSeconds == true`:
             * | Distance between dates | Result               |
             * |------------------------|----------------------|
             * | 0 secs ... 5 secs      | less than 5 seconds  |
             * | 5 secs ... 10 secs     | less than 10 seconds |
             * | 10 secs ... 20 secs    | less than 20 seconds |
             * | 20 secs ... 40 secs    | half a minute        |
             * | 40 secs ... 60 secs    | less than a minute   |
             * | 60 secs ... 90 secs    | 1 minute             |
             *
             * @param {Date|String|Number} dateToCompare - the date to compare with
             * @param {Date|String|Number} date - the other date
             * @param {Object} [options] - the object with options
             * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed
             * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first
             * @param {Object} [options.locale=enLocale] - the locale object
             * @returns {String} the distance in words
             *
             * @example
             * // What is the distance between 2 July 2014 and 1 January 2015?
             * var result = distanceInWords(
             *   new Date(2014, 6, 2),
             *   new Date(2015, 0, 1)
             * )
             * //=> '6 months'
             *
             * @example
             * // What is the distance between 1 January 2015 00:00:15
             * // and 1 January 2015 00:00:00, including seconds?
             * var result = distanceInWords(
             *   new Date(2015, 0, 1, 0, 0, 15),
             *   new Date(2015, 0, 1, 0, 0, 0),
             *   {includeSeconds: true}
             * )
             * //=> 'less than 20 seconds'
             *
             * @example
             * // What is the distance from 1 January 2016
             * // to 1 January 2015, with a suffix?
             * var result = distanceInWords(
             *   new Date(2016, 0, 1),
             *   new Date(2015, 0, 1),
             *   {addSuffix: true}
             * )
             * //=> 'about 1 year ago'
             *
             * @example
             * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?
             * var eoLocale = require('date-fns/locale/eo')
             * var result = distanceInWords(
             *   new Date(2016, 7, 1),
             *   new Date(2015, 0, 1),
             *   {locale: eoLocale}
             * )
             * //=> 'pli ol 1 jaro'
             */
            function distanceInWords (dirtyDateToCompare, dirtyDate, dirtyOptions) {
                var options = dirtyOptions || {}

                var comparison = compareDesc(dirtyDateToCompare, dirtyDate)

                var locale = options.locale
                var localize = enLocale.distanceInWords.localize
                if (locale && locale.distanceInWords && locale.distanceInWords.localize) {
                    localize = locale.distanceInWords.localize
                }

                var localizeOptions = {
                    addSuffix: Boolean(options.addSuffix),
                    comparison: comparison
                }

                var dateLeft, dateRight
                if (comparison > 0) {
                    dateLeft = parse(dirtyDateToCompare)
                    dateRight = parse(dirtyDate)
                } else {
                    dateLeft = parse(dirtyDate)
                    dateRight = parse(dirtyDateToCompare)
                }

                var seconds = differenceInSeconds(dateRight, dateLeft)
                var offset = dateRight.getTimezoneOffset() - dateLeft.getTimezoneOffset()
                var minutes = Math.round(seconds / 60) - offset
                var months

                // 0 up to 2 mins
                if (minutes < 2) {
                    if (options.includeSeconds) {
                        if (seconds < 5) {
                            return localize('lessThanXSeconds', 5, localizeOptions)
                        } else if (seconds < 10) {
                            return localize('lessThanXSeconds', 10, localizeOptions)
                        } else if (seconds < 20) {
                            return localize('lessThanXSeconds', 20, localizeOptions)
                        } else if (seconds < 40) {
                            return localize('halfAMinute', null, localizeOptions)
                        } else if (seconds < 60) {
                            return localize('lessThanXMinutes', 1, localizeOptions)
                        } else {
                            return localize('xMinutes', 1, localizeOptions)
                        }
                    } else {
                        if (minutes === 0) {
                            return localize('lessThanXMinutes', 1, localizeOptions)
                        } else {
                            return localize('xMinutes', minutes, localizeOptions)
                        }
                    }

                    // 2 mins up to 0.75 hrs
                } else if (minutes < 45) {
                    return localize('xMinutes', minutes, localizeOptions)

                    // 0.75 hrs up to 1.5 hrs
                } else if (minutes < 90) {
                    return localize('aboutXHours', 1, localizeOptions)

                    // 1.5 hrs up to 24 hrs
                } else if (minutes < MINUTES_IN_DAY) {
                    var hours = Math.round(minutes / 60)
                    return localize('aboutXHours', hours, localizeOptions)

                    // 1 day up to 1.75 days
                } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {
                    return localize('xDays', 1, localizeOptions)

                    // 1.75 days up to 30 days
                } else if (minutes < MINUTES_IN_MONTH) {
                    var days = Math.round(minutes / MINUTES_IN_DAY)
                    return localize('xDays', days, localizeOptions)

                    // 1 month up to 2 months
                } else if (minutes < MINUTES_IN_TWO_MONTHS) {
                    months = Math.round(minutes / MINUTES_IN_MONTH)
                    return localize('aboutXMonths', months, localizeOptions)
                }

                months = differenceInMonths(dateRight, dateLeft)

                // 2 months up to 12 months
                if (months < 12) {
                    var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH)
                    return localize('xMonths', nearestMonth, localizeOptions)

                    // 1 year up to max Date
                } else {
                    var monthsSinceStartOfYear = months % 12
                    var years = Math.floor(months / 12)

                    // N years up to 1 years 3 months
                    if (monthsSinceStartOfYear < 3) {
                        return localize('aboutXYears', years, localizeOptions)

                        // N years 3 months up to N years 9 months
                    } else if (monthsSinceStartOfYear < 9) {
                        return localize('overXYears', years, localizeOptions)

                        // N years 9 months up to N year 12 months
                    } else {
                        return localize('almostXYears', years + 1, localizeOptions)
                    }
                }
            }

            module.exports = distanceInWords


            /***/ }),
        /* 187 */
        /***/ (function(module, exports, __webpack_require__) {

            var parse = __webpack_require__(18)

            /**
             * @category Common Helpers
             * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.
             *
             * @description
             * Compare the two dates and return -1 if the first date is after the second,
             * 1 if the first date is before the second or 0 if dates are equal.
             *
             * @param {Date|String|Number} dateLeft - the first date to compare
             * @param {Date|String|Number} dateRight - the second date to compare
             * @returns {Number} the result of the comparison
             *
             * @example
             * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:
             * var result = compareDesc(
             *   new Date(1987, 1, 11),
             *   new Date(1989, 6, 10)
             * )
             * //=> 1
             *
             * @example
             * // Sort the array of dates in reverse chronological order:
             * var result = [
             *   new Date(1995, 6, 2),
             *   new Date(1987, 1, 11),
             *   new Date(1989, 6, 10)
             * ].sort(compareDesc)
             * //=> [
             * //   Sun Jul 02 1995 00:00:00,
             * //   Mon Jul 10 1989 00:00:00,
             * //   Wed Feb 11 1987 00:00:00
             * // ]
             */
            function compareDesc (dirtyDateLeft, dirtyDateRight) {
                var dateLeft = parse(dirtyDateLeft)
                var timeLeft = dateLeft.getTime()
                var dateRight = parse(dirtyDateRight)
                var timeRight = dateRight.getTime()

                if (timeLeft > timeRight) {
                    return -1
                } else if (timeLeft < timeRight) {
                    return 1
                } else {
                    return 0
                }
            }

            module.exports = compareDesc


            /***/ }),
        /* 188 */
        /***/ (function(module, exports) {

            /**
             * @category Common Helpers
             * @summary Is the given argument an instance of Date?
             *
             * @description
             * Is the given argument an instance of Date?
             *
             * @param {*} argument - the argument to check
             * @returns {Boolean} the given argument is an instance of Date
             *
             * @example
             * // Is 'mayonnaise' a Date?
             * var result = isDate('mayonnaise')
             * //=> false
             */
            function isDate (argument) {
                return argument instanceof Date
            }

            module.exports = isDate


            /***/ }),
        /* 189 */
        /***/ (function(module, exports, __webpack_require__) {

            var differenceInMilliseconds = __webpack_require__(190)

            /**
             * @category Second Helpers
             * @summary Get the number of seconds between the given dates.
             *
             * @description
             * Get the number of seconds between the given dates.
             *
             * @param {Date|String|Number} dateLeft - the later date
             * @param {Date|String|Number} dateRight - the earlier date
             * @returns {Number} the number of seconds
             *
             * @example
             * // How many seconds are between
             * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?
             * var result = differenceInSeconds(
             *   new Date(2014, 6, 2, 12, 30, 20, 0),
             *   new Date(2014, 6, 2, 12, 30, 7, 999)
             * )
             * //=> 12
             */
            function differenceInSeconds (dirtyDateLeft, dirtyDateRight) {
                var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / 1000
                return diff > 0 ? Math.floor(diff) : Math.ceil(diff)
            }

            module.exports = differenceInSeconds


            /***/ }),
        /* 190 */
        /***/ (function(module, exports, __webpack_require__) {

            var parse = __webpack_require__(18)

            /**
             * @category Millisecond Helpers
             * @summary Get the number of milliseconds between the given dates.
             *
             * @description
             * Get the number of milliseconds between the given dates.
             *
             * @param {Date|String|Number} dateLeft - the later date
             * @param {Date|String|Number} dateRight - the earlier date
             * @returns {Number} the number of milliseconds
             *
             * @example
             * // How many milliseconds are between
             * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?
             * var result = differenceInMilliseconds(
             *   new Date(2014, 6, 2, 12, 30, 21, 700),
             *   new Date(2014, 6, 2, 12, 30, 20, 600)
             * )
             * //=> 1100
             */
            function differenceInMilliseconds (dirtyDateLeft, dirtyDateRight) {
                var dateLeft = parse(dirtyDateLeft)
                var dateRight = parse(dirtyDateRight)
                return dateLeft.getTime() - dateRight.getTime()
            }

            module.exports = differenceInMilliseconds


            /***/ }),
        /* 191 */
        /***/ (function(module, exports, __webpack_require__) {

            var parse = __webpack_require__(18)
            var differenceInCalendarMonths = __webpack_require__(192)
            var compareAsc = __webpack_require__(193)

            /**
             * @category Month Helpers
             * @summary Get the number of full months between the given dates.
             *
             * @description
             * Get the number of full months between the given dates.
             *
             * @param {Date|String|Number} dateLeft - the later date
             * @param {Date|String|Number} dateRight - the earlier date
             * @returns {Number} the number of full months
             *
             * @example
             * // How many full months are between 31 January 2014 and 1 September 2014?
             * var result = differenceInMonths(
             *   new Date(2014, 8, 1),
             *   new Date(2014, 0, 31)
             * )
             * //=> 7
             */
            function differenceInMonths (dirtyDateLeft, dirtyDateRight) {
                var dateLeft = parse(dirtyDateLeft)
                var dateRight = parse(dirtyDateRight)

                var sign = compareAsc(dateLeft, dateRight)
                var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight))
                dateLeft.setMonth(dateLeft.getMonth() - sign * difference)

                // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full
                // If so, result must be decreased by 1 in absolute value
                var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign
                return sign * (difference - isLastMonthNotFull)
            }

            module.exports = differenceInMonths


            /***/ }),
        /* 192 */
        /***/ (function(module, exports, __webpack_require__) {

            var parse = __webpack_require__(18)

            /**
             * @category Month Helpers
             * @summary Get the number of calendar months between the given dates.
             *
             * @description
             * Get the number of calendar months between the given dates.
             *
             * @param {Date|String|Number} dateLeft - the later date
             * @param {Date|String|Number} dateRight - the earlier date
             * @returns {Number} the number of calendar months
             *
             * @example
             * // How many calendar months are between 31 January 2014 and 1 September 2014?
             * var result = differenceInCalendarMonths(
             *   new Date(2014, 8, 1),
             *   new Date(2014, 0, 31)
             * )
             * //=> 8
             */
            function differenceInCalendarMonths (dirtyDateLeft, dirtyDateRight) {
                var dateLeft = parse(dirtyDateLeft)
                var dateRight = parse(dirtyDateRight)

                var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()
                var monthDiff = dateLeft.getMonth() - dateRight.getMonth()

                return yearDiff * 12 + monthDiff
            }

            module.exports = differenceInCalendarMonths


            /***/ }),
        /* 193 */
        /***/ (function(module, exports, __webpack_require__) {

            var parse = __webpack_require__(18)

            /**
             * @category Common Helpers
             * @summary Compare the two dates and return -1, 0 or 1.
             *
             * @description
             * Compare the two dates and return 1 if the first date is after the second,
             * -1 if the first date is before the second or 0 if dates are equal.
             *
             * @param {Date|String|Number} dateLeft - the first date to compare
             * @param {Date|String|Number} dateRight - the second date to compare
             * @returns {Number} the result of the comparison
             *
             * @example
             * // Compare 11 February 1987 and 10 July 1989:
             * var result = compareAsc(
             *   new Date(1987, 1, 11),
             *   new Date(1989, 6, 10)
             * )
             * //=> -1
             *
             * @example
             * // Sort the array of dates:
             * var result = [
             *   new Date(1995, 6, 2),
             *   new Date(1987, 1, 11),
             *   new Date(1989, 6, 10)
             * ].sort(compareAsc)
             * //=> [
             * //   Wed Feb 11 1987 00:00:00,
             * //   Mon Jul 10 1989 00:00:00,
             * //   Sun Jul 02 1995 00:00:00
             * // ]
             */
            function compareAsc (dirtyDateLeft, dirtyDateRight) {
                var dateLeft = parse(dirtyDateLeft)
                var timeLeft = dateLeft.getTime()
                var dateRight = parse(dirtyDateRight)
                var timeRight = dateRight.getTime()

                if (timeLeft < timeRight) {
                    return -1
                } else if (timeLeft > timeRight) {
                    return 1
                } else {
                    return 0
                }
            }

            module.exports = compareAsc


            /***/ }),
        /* 194 */
        /***/ (function(module, exports, __webpack_require__) {

            var buildDistanceInWordsLocale = __webpack_require__(195)
            var buildFormatLocale = __webpack_require__(196)

            /**
             * @category Locales
             * @summary English locale.
             */
            module.exports = {
                distanceInWords: buildDistanceInWordsLocale(),
                format: buildFormatLocale()
            }


            /***/ }),
        /* 195 */
        /***/ (function(module, exports) {

            function buildDistanceInWordsLocale () {
                var distanceInWordsLocale = {
                    lessThanXSeconds: {
                        one: 'less than a second',
                        other: 'less than {{count}} seconds'
                    },

                    xSeconds: {
                        one: '1 second',
                        other: '{{count}} seconds'
                    },

                    halfAMinute: 'half a minute',

                    lessThanXMinutes: {
                        one: 'less than a minute',
                        other: 'less than {{count}} minutes'
                    },

                    xMinutes: {
                        one: '1 minute',
                        other: '{{count}} minutes'
                    },

                    aboutXHours: {
                        one: 'about 1 hour',
                        other: 'about {{count}} hours'
                    },

                    xHours: {
                        one: '1 hour',
                        other: '{{count}} hours'
                    },

                    xDays: {
                        one: '1 day',
                        other: '{{count}} days'
                    },

                    aboutXMonths: {
                        one: 'about 1 month',
                        other: 'about {{count}} months'
                    },

                    xMonths: {
                        one: '1 month',
                        other: '{{count}} months'
                    },

                    aboutXYears: {
                        one: 'about 1 year',
                        other: 'about {{count}} years'
                    },

                    xYears: {
                        one: '1 year',
                        other: '{{count}} years'
                    },

                    overXYears: {
                        one: 'over 1 year',
                        other: 'over {{count}} years'
                    },

                    almostXYears: {
                        one: 'almost 1 year',
                        other: 'almost {{count}} years'
                    }
                }

                function localize (token, count, options) {
                    options = options || {}

                    var result
                    if (typeof distanceInWordsLocale[token] === 'string') {
                        result = distanceInWordsLocale[token]
                    } else if (count === 1) {
                        result = distanceInWordsLocale[token].one
                    } else {
                        result = distanceInWordsLocale[token].other.replace('{{count}}', count)
                    }

                    if (options.addSuffix) {
                        if (options.comparison > 0) {
                            return 'in ' + result
                        } else {
                            return result + ' ago'
                        }
                    }

                    return result
                }

                return {
                    localize: localize
                }
            }

            module.exports = buildDistanceInWordsLocale


            /***/ }),
        /* 196 */
        /***/ (function(module, exports, __webpack_require__) {

            var buildFormattingTokensRegExp = __webpack_require__(197)

            function buildFormatLocale () {
                // Note: in English, the names of days of the week and months are capitalized.
                // If you are making a new locale based on this one, check if the same is true for the language you're working on.
                // Generally, formatted dates should look like they are in the middle of a sentence,
                // e.g. in Spanish language the weekdays and months should be in the lowercase.
                var months3char = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
                var monthsFull = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
                var weekdays2char = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']
                var weekdays3char = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
                var weekdaysFull = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
                var meridiemUppercase = ['AM', 'PM']
                var meridiemLowercase = ['am', 'pm']
                var meridiemFull = ['a.m.', 'p.m.']

                var formatters = {
                    // Month: Jan, Feb, ..., Dec
                    'MMM': function (date) {
                        return months3char[date.getMonth()]
                    },

                    // Month: January, February, ..., December
                    'MMMM': function (date) {
                        return monthsFull[date.getMonth()]
                    },

                    // Day of week: Su, Mo, ..., Sa
                    'dd': function (date) {
                        return weekdays2char[date.getDay()]
                    },

                    // Day of week: Sun, Mon, ..., Sat
                    'ddd': function (date) {
                        return weekdays3char[date.getDay()]
                    },

                    // Day of week: Sunday, Monday, ..., Saturday
                    'dddd': function (date) {
                        return weekdaysFull[date.getDay()]
                    },

                    // AM, PM
                    'A': function (date) {
                        return (date.getHours() / 12) >= 1 ? meridiemUppercase[1] : meridiemUppercase[0]
                    },

                    // am, pm
                    'a': function (date) {
                        return (date.getHours() / 12) >= 1 ? meridiemLowercase[1] : meridiemLowercase[0]
                    },

                    // a.m., p.m.
                    'aa': function (date) {
                        return (date.getHours() / 12) >= 1 ? meridiemFull[1] : meridiemFull[0]
                    }
                }

                // Generate ordinal version of formatters: M -> Mo, D -> Do, etc.
                var ordinalFormatters = ['M', 'D', 'DDD', 'd', 'Q', 'W']
                ordinalFormatters.forEach(function (formatterToken) {
                    formatters[formatterToken + 'o'] = function (date, formatters) {
                        return ordinal(formatters[formatterToken](date))
                    }
                })

                return {
                    formatters: formatters,
                    formattingTokensRegExp: buildFormattingTokensRegExp(formatters)
                }
            }

            function ordinal (number) {
                var rem100 = number % 100
                if (rem100 > 20 || rem100 < 10) {
                    switch (rem100 % 10) {
                        case 1:
                            return number + 'st'
                        case 2:
                            return number + 'nd'
                        case 3:
                            return number + 'rd'
                    }
                }
                return number + 'th'
            }

            module.exports = buildFormatLocale


            /***/ }),
        /* 197 */
        /***/ (function(module, exports) {

            var commonFormatterKeys = [
                'M', 'MM', 'Q', 'D', 'DD', 'DDD', 'DDDD', 'd',
                'E', 'W', 'WW', 'YY', 'YYYY', 'GG', 'GGGG',
                'H', 'HH', 'h', 'hh', 'm', 'mm',
                's', 'ss', 'S', 'SS', 'SSS',
                'Z', 'ZZ', 'X', 'x'
            ]

            function buildFormattingTokensRegExp (formatters) {
                var formatterKeys = []
                for (var key in formatters) {
                    if (formatters.hasOwnProperty(key)) {
                        formatterKeys.push(key)
                    }
                }

                var formattingTokens = commonFormatterKeys
                    .concat(formatterKeys)
                    .sort()
                    .reverse()
                var formattingTokensRegExp = new RegExp(
                    '(\\[[^\\[]*\\])|(\\\\)?' + '(' + formattingTokens.join('|') + '|.)', 'g'
                )

                return formattingTokensRegExp
            }

            module.exports = buildFormattingTokensRegExp


            /***/ }),
        /* 198 */
        /***/ (function(module, exports) {

            function buildDistanceInWordsLocale () {
                var distanceInWordsLocale = {
                    lessThanXSeconds: {
                        one: '不到 1 秒',
                        other: '不到 {{count}} 秒'
                    },

                    xSeconds: {
                        one: '1 秒',
                        other: '{{count}} 秒'
                    },

                    halfAMinute: '半分钟',

                    lessThanXMinutes: {
                        one: '不到 1 分钟',
                        other: '不到 {{count}} 分钟'
                    },

                    xMinutes: {
                        one: '1 分钟',
                        other: '{{count}} 分钟'
                    },

                    xHours: {
                        one: '1 小时',
                        other: '{{count}} 小时'
                    },

                    aboutXHours: {
                        one: '大约 1 小时',
                        other: '大约 {{count}} 小时'
                    },

                    xDays: {
                        one: '1 天',
                        other: '{{count}} 天'
                    },

                    aboutXMonths: {
                        one: '大约 1 个月',
                        other: '大约 {{count}} 个月'
                    },

                    xMonths: {
                        one: '1 个月',
                        other: '{{count}} 个月'
                    },

                    aboutXYears: {
                        one: '大约 1 年',
                        other: '大约 {{count}} 年'
                    },

                    xYears: {
                        one: '1 年',
                        other: '{{count}} 年'
                    },

                    overXYears: {
                        one: '超过 1 年',
                        other: '超过 {{count}} 年'
                    },

                    almostXYears: {
                        one: '将近 1 年',
                        other: '将近 {{count}} 年'
                    }
                }

                function localize (token, count, options) {
                    options = options || {}

                    var result
                    if (typeof distanceInWordsLocale[token] === 'string') {
                        result = distanceInWordsLocale[token]
                    } else if (count === 1) {
                        result = distanceInWordsLocale[token].one
                    } else {
                        result = distanceInWordsLocale[token].other.replace('{{count}}', count)
                    }

                    if (options.addSuffix) {
                        if (options.comparison > 0) {
                            return result + '内'
                        } else {
                            return result + '前'
                        }
                    }

                    return result
                }

                return {
                    localize: localize
                }
            }

            module.exports = buildDistanceInWordsLocale


            /***/ }),
        /* 199 */
        /***/ (function(module, exports) {

            function buildDistanceInWordsLocale () {
                var distanceInWordsLocale = {
                    lessThanXSeconds: {
                        one: '少於 1 秒',
                        other: '少於 {{count}} 秒'
                    },

                    xSeconds: {
                        one: '1 秒',
                        other: '{{count}} 秒'
                    },

                    halfAMinute: '半分鐘',

                    lessThanXMinutes: {
                        one: '少於 1 分鐘',
                        other: '少於 {{count}} 分鐘'
                    },

                    xMinutes: {
                        one: '1 分鐘',
                        other: '{{count}} 分鐘'
                    },

                    xHours: {
                        one: '1 小時',
                        other: '{{count}} 小時'
                    },

                    aboutXHours: {
                        one: '大約 1 小時',
                        other: '大約 {{count}} 小時'
                    },

                    xDays: {
                        one: '1 天',
                        other: '{{count}} 天'
                    },

                    aboutXMonths: {
                        one: '大約 1 個月',
                        other: '大約 {{count}} 個月'
                    },

                    xMonths: {
                        one: '1 個月',
                        other: '{{count}} 個月'
                    },

                    aboutXYears: {
                        one: '大約 1 年',
                        other: '大約 {{count}} 年'
                    },

                    xYears: {
                        one: '1 年',
                        other: '{{count}} 年'
                    },

                    overXYears: {
                        one: '超過 1 年',
                        other: '超過 {{count}} 年'
                    },

                    almostXYears: {
                        one: '將近 1 年',
                        other: '將近 {{count}} 年'
                    }
                }

                function localize (token, count, options) {
                    options = options || {}

                    var result
                    if (typeof distanceInWordsLocale[token] === 'string') {
                        result = distanceInWordsLocale[token]
                    } else if (count === 1) {
                        result = distanceInWordsLocale[token].one
                    } else {
                        result = distanceInWordsLocale[token].other.replace('{{count}}', count)
                    }

                    if (options.addSuffix) {
                        if (options.comparison > 0) {
                            return result + '內'
                        } else {
                            return result + '前'
                        }
                    }

                    return result
                }

                return {
                    localize: localize
                }
            }

            module.exports = buildDistanceInWordsLocale


            /***/ }),
        /* 200 */
        /***/ (function(module, exports) {

            function buildDistanceInWordsLocale () {
                var distanceInWordsLocale = {
                    lessThanXSeconds: {
                        one: 'menos de un segundo',
                        other: 'menos de {{count}} segundos'
                    },

                    xSeconds: {
                        one: '1 segundo',
                        other: '{{count}} segundos'
                    },

                    halfAMinute: 'medio minuto',

                    lessThanXMinutes: {
                        one: 'menos de un minuto',
                        other: 'menos de {{count}} minutos'
                    },

                    xMinutes: {
                        one: '1 minuto',
                        other: '{{count}} minutos'
                    },

                    aboutXHours: {
                        one: 'alrededor de 1 hora',
                        other: 'alrededor de {{count}} horas'
                    },

                    xHours: {
                        one: '1 hora',
                        other: '{{count}} horas'
                    },

                    xDays: {
                        one: '1 día',
                        other: '{{count}} días'
                    },

                    aboutXMonths: {
                        one: 'alrededor de 1 mes',
                        other: 'alrededor de {{count}} meses'
                    },

                    xMonths: {
                        one: '1 mes',
                        other: '{{count}} meses'
                    },

                    aboutXYears: {
                        one: 'alrededor de 1 año',
                        other: 'alrededor de {{count}} años'
                    },

                    xYears: {
                        one: '1 año',
                        other: '{{count}} años'
                    },

                    overXYears: {
                        one: 'más de 1 año',
                        other: 'más de {{count}} años'
                    },

                    almostXYears: {
                        one: 'casi 1 año',
                        other: 'casi {{count}} años'
                    }
                }

                function localize (token, count, options) {
                    options = options || {}

                    var result
                    if (typeof distanceInWordsLocale[token] === 'string') {
                        result = distanceInWordsLocale[token]
                    } else if (count === 1) {
                        result = distanceInWordsLocale[token].one
                    } else {
                        result = distanceInWordsLocale[token].other.replace('{{count}}', count)
                    }

                    if (options.addSuffix) {
                        if (options.comparison > 0) {
                            return 'en ' + result
                        } else {
                            return 'hace ' + result
                        }
                    }

                    return result
                }

                return {
                    localize: localize
                }
            }

            module.exports = buildDistanceInWordsLocale


            /***/ }),
        /* 201 */
        /***/ (function(module, exports) {

            function buildDistanceInWordsLocale () {
                var distanceInWordsLocale = {
                    lessThanXSeconds: {
                        one: 'moins d’une seconde',
                        other: 'moins de {{count}} secondes'
                    },

                    xSeconds: {
                        one: '1 seconde',
                        other: '{{count}} secondes'
                    },

                    halfAMinute: '30 secondes',

                    lessThanXMinutes: {
                        one: 'moins d’une minute',
                        other: 'moins de {{count}} minutes'
                    },

                    xMinutes: {
                        one: '1 minute',
                        other: '{{count}} minutes'
                    },

                    aboutXHours: {
                        one: 'environ 1 heure',
                        other: 'environ {{count}} heures'
                    },

                    xHours: {
                        one: '1 heure',
                        other: '{{count}} heures'
                    },

                    xDays: {
                        one: '1 jour',
                        other: '{{count}} jours'
                    },

                    aboutXMonths: {
                        one: 'environ 1 mois',
                        other: 'environ {{count}} mois'
                    },

                    xMonths: {
                        one: '1 mois',
                        other: '{{count}} mois'
                    },

                    aboutXYears: {
                        one: 'environ 1 an',
                        other: 'environ {{count}} ans'
                    },

                    xYears: {
                        one: '1 an',
                        other: '{{count}} ans'
                    },

                    overXYears: {
                        one: 'plus d’un an',
                        other: 'plus de {{count}} ans'
                    },

                    almostXYears: {
                        one: 'presqu’un an',
                        other: 'presque {{count}} ans'
                    }
                }

                function localize (token, count, options) {
                    options = options || {}

                    var result
                    if (typeof distanceInWordsLocale[token] === 'string') {
                        result = distanceInWordsLocale[token]
                    } else if (count === 1) {
                        result = distanceInWordsLocale[token].one
                    } else {
                        result = distanceInWordsLocale[token].other.replace('{{count}}', count)
                    }

                    if (options.addSuffix) {
                        if (options.comparison > 0) {
                            return 'dans ' + result
                        } else {
                            return 'il y a ' + result
                        }
                    }

                    return result
                }

                return {
                    localize: localize
                }
            }

            module.exports = buildDistanceInWordsLocale


            /***/ }),
        /* 202 */
        /***/ (function(module, exports) {

// removed by extract-text-webpack-plugin

            /***/ }),
        /* 203 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            Object.defineProperty(exports, "__esModule", {
                value: true
            });
            var GT_ACCESS_TOKEN = exports.GT_ACCESS_TOKEN = 'GT_ACCESS_TOKEN';
            var GT_VERSION = exports.GT_VERSION = "1.1.4"; // eslint-disable-line
            var GT_COMMENT = exports.GT_COMMENT = 'GT_COMMENT';

            /***/ }),
        /* 204 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            Object.defineProperty(exports, "__esModule", {
                value: true
            });

            var _toConsumableArray2 = __webpack_require__(205);

            var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);

            var _util = __webpack_require__(70);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            var getQL = function getQL(vars, pagerDirection) {
                var cursorDirection = pagerDirection === 'last' ? 'before' : 'after';
                var ql = '\n  query getIssueAndComments(\n    $owner: String!,\n    $repo: String!,\n    $id: Int!,\n    $cursor: String,\n    $pageSize: Int!\n  ) {\n    repository(owner: $owner, name: $repo) {\n      issue(number: $id) {\n        title\n        url\n        bodyHTML\n        createdAt\n        comments(' + pagerDirection + ': $pageSize, ' + cursorDirection + ': $cursor) {\n          totalCount\n          pageInfo {\n            ' + (pagerDirection === 'last' ? 'hasPreviousPage' : 'hasNextPage') + '\n            ' + (cursorDirection === 'before' ? 'startCursor' : 'endCursor') + '\n          }\n          nodes {\n            databaseId\n            author {\n              avatarUrl\n              login\n              url\n            }\n            bodyHTML\n            body\n            createdAt\n          }\n        }\n      }\n    }\n  }\n  ';

                if (vars.cursor === null) delete vars.cursor;

                return {
                    operationName: 'getIssueAndComments',
                    query: ql,
                    variables: vars
                };
            };

            function getComments(issue) {
                var _this = this;

                var _options = this.options,
                    owner = _options.owner,
                    repo = _options.repo,
                    perPage = _options.perPage,
                    pagerDirection = _options.pagerDirection;
                var _state = this.state,
                    cursor = _state.cursor,
                    comments = _state.comments;

                return _util.axiosGithub.post('/graphql', getQL({
                    owner: owner,
                    repo: repo,
                    id: issue.number,
                    pageSize: perPage,
                    cursor: cursor
                }, pagerDirection), {
                    headers: {
                        Authorization: 'bearer ' + this.accessToken
                    }
                }).then(function (res) {
                    var data = res.data.data.repository.issue.comments;
                    var items = data.nodes.map(function (node) {
                        return {
                            id: node.databaseId,
                            user: {
                                avatar_url: node.author.avatarUrl,
                                login: node.author.login,
                                html_url: node.author.url
                            },
                            created_at: node.createdAt,
                            body_html: node.bodyHTML,
                            body: node.body,
                            html_url: 'https://github.com/' + owner + '/' + repo + '/issues/' + issue.number + '#issuecomment-' + node.databaseId
                        };
                    });

                    var cs = void 0;

                    if (pagerDirection === 'last') {
                        cs = [].concat((0, _toConsumableArray3.default)(items), (0, _toConsumableArray3.default)(comments));
                    } else {
                        cs = [].concat((0, _toConsumableArray3.default)(comments), (0, _toConsumableArray3.default)(items));
                    }

                    var isLoadOver = data.pageInfo.hasPreviousPage === false || data.pageInfo.hasNextPage === false;
                    _this.setState({
                        comments: cs,
                        isLoadOver: isLoadOver,
                        cursor: data.pageInfo.startCursor || data.pageInfo.endCursor
                    });
                    return cs;
                });
            }

            exports.default = getComments;

            /***/ }),
        /* 205 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";


            exports.__esModule = true;

            var _from = __webpack_require__(206);

            var _from2 = _interopRequireDefault(_from);

            function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

            exports.default = function (arr) {
                if (Array.isArray(arr)) {
                    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
                        arr2[i] = arr[i];
                    }

                    return arr2;
                } else {
                    return (0, _from2.default)(arr);
                }
            };

            /***/ }),
        /* 206 */
        /***/ (function(module, exports, __webpack_require__) {

            module.exports = { "default": __webpack_require__(207), __esModule: true };

            /***/ }),
        /* 207 */
        /***/ (function(module, exports, __webpack_require__) {

            __webpack_require__(20);
            __webpack_require__(208);
            module.exports = __webpack_require__(0).Array.from;

            /***/ }),
        /* 208 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";

            var ctx            = __webpack_require__(13)
                , $export        = __webpack_require__(5)
                , toObject       = __webpack_require__(22)
                , call           = __webpack_require__(59)
                , isArrayIter    = __webpack_require__(60)
                , toLength       = __webpack_require__(39)
                , createProperty = __webpack_require__(209)
                , getIterFn      = __webpack_require__(44);

            $export($export.S + $export.F * !__webpack_require__(62)(function(iter){ Array.from(iter); }), 'Array', {
                // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
                from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){
                    var O       = toObject(arrayLike)
                        , C       = typeof this == 'function' ? this : Array
                        , aLen    = arguments.length
                        , mapfn   = aLen > 1 ? arguments[1] : undefined
                        , mapping = mapfn !== undefined
                        , index   = 0
                        , iterFn  = getIterFn(O)
                        , length, result, step, iterator;
                    if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
                    // if object isn't iterable or it's array with default iterator - use simple case
                    if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){
                        for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){
                            createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
                        }
                    } else {
                        length = toLength(O.length);
                        for(result = new C(length); length > index; index++){
                            createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
                        }
                    }
                    result.length = index;
                    return result;
                }
            });


            /***/ }),
        /* 209 */
        /***/ (function(module, exports, __webpack_require__) {

            "use strict";

            var $defineProperty = __webpack_require__(6)
                , createDesc      = __webpack_require__(19);

            module.exports = function(object, index, value){
                if(index in object)$defineProperty.f(object, index, createDesc(0, value));
                else object[index] = value;
            };

            /***/ })
        /******/ ]);
});


// WEBPACK FOOTER //
// gitalk.min.js